除非通过COM完成,否则测试完成/执行8将不会刷新MO_Info

时间:2012-12-18 04:38:41

标签: ruby testcomplete

我在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

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

1 个答案:

答案 0 :(得分:3)

TestComplete有三个对象树:

  1. Sys 树,可在对象浏览器面板中找到 包含所有应用程序对象。
  2. NameMapping 树,其中包含所有映射名称。
  3. 记录测试时使用的别名树 可以由测试人员灵活修改。
  4. NameMapping树中别名树引用对象中的对象和后者中的对象引用 Sys 树中的对象。 RefreshMappingInfo 方法用于将存储在 NameMapping 树的对象中的这些引用刷新到 Sys 树中的对象。因此,该方法仅适用于 NameMapping 别名树中的对象。

    在您的代码中,您使用 Sys 树中的对象: Sys.Process(“iexplore”)。您收到错误,因为 Sys 树中的对象没有 RefreshMappingInfo 方法。您需要调用刷新方法或尝试使用 NameMapping 别名树中的对象。例如:

    • Sys.Process( “IEXPLORE”)。刷新()
    • Aliases.IExplore.RefreshMappingInfo()