TestComplete 8和IE 9:处理两个进程

时间:2013-02-08 00:34:15

标签: internet-explorer-9 testcomplete

使用URL启动IE9我发现启动了两个进程;父母和子女的过程。在TestComplete的ObjectBrowser中,两个进程都有一个Page节点和相关的子节点。

在我的Silverlight AUT(测试中的应用程序)中有一个数据网格,我需要滚动。 我在尝试滚动网格之前检查滚动条。

但是根据我使用的过程,我会得到不同的结果。

aqObject.IsSupported(
    Sys.Process("iexplore", 1).Page("https://localhost/url/" ).Panel("silverlightContainer" ).Object(0 ).UIAObject("Popup" ).UIAObject("x" ).UIAObject("tab" ).UIAObject("TabItem", 2 ).UIAObject("StepList" )
, "VerticalScrollPercent")

aqObject.IsSupported(
    Sys.Process("iexplore", 2).Page("https://localhost/url/" ).Panel("silverlightContainer" ).Object(0 ).UIAObject("Popup" ).UIAObject("x" ).UIAObject("tab" ).UIAObject("TabItem", 2 ).UIAObject("StepList" )
, "VerticalScrollPercent")

其中一个将返回true,另一个将返回false。我刷新世界Sys.Refresh或控件Sys.Process...UIAObject("StepList").Refresh的重要性似乎并不重要,一方在另一方通过时总会失败。

这真的很奇怪,但如果可以预测的话,我可以解决它,但事实并非如此。有时父进程树有效,有时是子进程。

我的问题是......

  • 发生了什么事?
  • 我如何决定启动应用程序 哪个过程用于自动化?
  • 我怎样才能实现滚动列表的目标(这样我可以找到我想要的行)而不会遇到这个问题?

1 个答案:

答案 0 :(得分:4)

这是因为Internet Explorer的 LCIE 功能(松散耦合的Internet Explorer)。它使Internet Explorer为每个打开的网页都有一个主进程和一个单独的进程。您可以在Preparing Internet Explorer for Web Testing帮助主题中找到有关此功能的更多信息以及有关如何禁用此功能的详细信息。

此外,您可以将该工具的实例升级到TestComplete 9.此版本允许访问页面对象,无论浏览器的类型和其实例的索引如何。例如:

var page = Sys.Browser().Page("http://www.google.com");