我正在尝试使用QTP11获取所有打开的浏览器对象。 我使用的代码如下:
Set descBrowser = Description.Create
descBrowser("micClass").Value = "Browser"
Set objChildren = Desktop.ChildObjects( descBrowser )
在测试期间,我打开了两个IE浏览器窗口,但代码返回的集合显示了四个找到的项目。我还检查了正在运行的进程,它显示正在运行的2个进程的正确数量。
我还检查了3个浏览器打开,在这种情况下,它显示了6个符合描述的对象。
有人可以解释为什么会发生这种情况吗?
答案 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浏览器控件识别