0

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

我运行以下 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 并执行相同的代码,它工作正常。所以在红宝石中:

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

为什么这在测试期间不起作用?我如何解决它?

4

1 回答 1

3

TestComplete 具有三个对象树:

  1. 可以在对象浏览器面板中找到并包含所有应用程序对象的系统树。
  2. 包含所有映射名称的NameMapping树。
  3. 记录测试时使用的别名树,测试人员可以灵活修改。

Aliases 树中的对象引用NameMapping树中的对象,而后者中的对象是引用Sys树中的对象。RefreshMappingInfo方法用于将存储在 NameMapping 树的对象中的这些引用刷新Sys树中的对象。因此,该方法仅适用于NameMappingAliases树中的对象。

在您的代码中,您使用Sys树中的一个对象:Sys.Process("iexplore")。由于Sys树中的对象没有RefreshMappingInfo方法,因此您会收到错误消息。您需要调用Refresh方法或尝试使用NameMappingAliases树中的对象。例如:

  • Sys.Process("iexplore").Refresh()
  • Aliases.IExplore.RefreshMappingInfo()
于 2012-12-18T05:28:46.750 回答