Desktop.ChildObjects返回的项目数量为Double

时间:2013-07-23 14:33:50

标签: browser qtp child-objects

我正在尝试使用QTP11获取所有打开的浏览器对象。 我使用的代码如下:

Set descBrowser = Description.Create
descBrowser("micClass").Value = "Browser"

Set objChildren = Desktop.ChildObjects( descBrowser )

在测试期间,我打开了两个IE浏览器窗口,但代码返回的集合显示了四个找到的项目。我还检查了正在运行的进程,它显示正在运行的2个进程的正确数量。

我还检查了3个浏览器打开,在这种情况下,它显示了6个符合描述的对象。

有人可以解释为什么会发生这种情况吗?

4 个答案:

答案 0 :(得分:1)

UFT 11.52 + Win7

我已经尝试了几种策略来完成这项工作(PID,标题,HWND,浏览器(索引)),但仍然没有成功,我不确定这个补丁是否已经存在。

我可以想象的是,对于一个简单的结束任务,UFT也有问题,因为它说"对象不可见"当我尝试关闭Browser()对象以随机方式崩溃测试时。

最好的结果是一堆已经存在的IExplorer窗口(Tabs)操作过。

有人可以提供检查已安装补丁的步骤吗?

答案 1 :(得分:0)

我看到相同的行为(仅适用于IE而非Firefox)。

解决此问题的方法是过滤掉重复项。对于IE,如果您比较objChildren(i).GetROProperty("hwnd"),您可以过滤掉具有相同值的那些但是如果您也使用Firefox则不起作用,因为在Firefox中如果您有多个标签,它们都具有相同的 hwnd

如果您必须考虑FF,可以使用 CreationTime 属性(而不是 hwnd )过滤掉重复项。

答案 2 :(得分:0)

我有同样的问题,我不得不退出补丁QTPWEB_00090以使其工作。看看你是否安装了QTP补丁并将其恢复。

答案 3 :(得分:0)

QTPWEB_00107 - Windows资源管理器中的Web浏览器控件识别