Ruby 测试完成/执行8韩元';t刷新映射信息,除非它';这是通过COM完成的

Ruby 测试完成/执行8韩元';t刷新映射信息,除非它';这是通过COM完成的,ruby,testcomplete,Ruby,Testcomplete,我正在TestCompleteV8中运行一个测试脚本。内存中的对象图已过期(出现一个对话框) 我运行以下VBScript代码 Sys.Process("iexplore").RefreshMappingInfo() 我收到以下错误消息 Unable to find the object RefreshMappingInfo. See Additional Information for details. The object with the specified attributes doe

我正在TestCompleteV8中运行一个测试脚本。内存中的对象图已过期(出现一个对话框)

我运行以下VBScript代码

Sys.Process("iexplore").RefreshMappingInfo()
我收到以下错误消息

Unable to find the object RefreshMappingInfo. See Additional Information for details.

The object with the specified attributes does not exist.

Possible causes of the error
此错误与TC将方法调用解释为试图查找控件有关

真奇怪。。如果我通过COM连接到TC8并执行相同的代码,它就可以正常工作。 所以在ruby中:

require 'win32ole'
tc = WIN32OLE.connect("TestComplete.TestCompleteApplication.8")
integration = tc.integration
Sys = integration.GetObjectByName("Sys")
puts Sys.Process("iexplore").Page("http://localhost:50563/x.aspx") _
  .Form("form1").Panel("silverlightControlHost").Object(0).UIAObject("Popup").Exists
' This returns false

Sys.Process("iexplore").RefreshMappingInfo()
' No error raised

puts Sys.Process("iexplore").Page("http://localhost:50563/x.aspx") _
  .Form("form1").Panel("silverlightControlHost").Object(0).UIAObject("Popup").Exists
' returns true
为什么这在测试中不起作用?
如何修复它?

TestComplete有三个对象树:

  • Sys树,可在对象浏览器面板和 包含所有应用程序对象
  • 包含所有映射名称的名称映射
  • 别名树,在记录测试时使用,并且 可由测试仪灵活修改
  • 别名树中的对象引用名称映射树中的对象,后面的对象引用的是Sys树中的对象。RefreshMappingInfo方法用于将存储在NameMapping树的对象中的这些引用刷新到Sys树中的对象。因此,该方法仅适用于名称映射别名树中的对象

    在您的代码中,您使用的是Sys树中的一个对象:Sys.Process(“iexplore”)。由于Sys树中的对象没有RefreshMappingInfo方法,因此会出现错误。您需要调用刷新方法,或者尝试使用名称映射别名树中的对象。例如:

    • Sys.Process(“iexplore”).Refresh()
    • 别名.IExplore.RefreshMappingInfo()

    TestComplete有三个对象树:

  • Sys树,可在对象浏览器面板和 包含所有应用程序对象
  • 包含所有映射名称的名称映射
  • 别名树,在记录测试时使用,并且 可由测试仪灵活修改
  • 别名树中的对象引用名称映射树中的对象,后面的对象引用的是Sys树中的对象。RefreshMappingInfo方法用于将存储在NameMapping树的对象中的这些引用刷新到Sys树中的对象。因此,该方法仅适用于名称映射别名树中的对象

    在您的代码中,您使用的是Sys树中的一个对象:Sys.Process(“iexplore”)。由于Sys树中的对象没有RefreshMappingInfo方法,因此会出现错误。您需要调用刷新方法,或者尝试使用名称映射别名树中的对象。例如:

    • Sys.Process(“iexplore”).Refresh()
    • 别名.IExplore.RefreshMappingInfo()

    Sys.Refresh有时不起作用。什么会迫使刷新Sys tree?COM?很难说,可能是一种不同的异常跟踪机制。从Sys树刷新对象的唯一方法是调用refresh方法。如果不起作用,则问题出在其他方面。请联系SmartBear支持团队以获得帮助-Sys.Refresh有时不起作用。什么会迫使刷新Sys tree?COM?很难说,可能是一种不同的异常跟踪机制。从Sys树刷新对象的唯一方法是调用refresh方法。如果不起作用,则问题出在其他方面。请联系SmartBear支持团队以获得帮助-