1

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

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

Set objChildren = Desktop.ChildObjects( descBrowser )

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

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

谁能解释为什么会发生这种情况?

4

4 回答 4

1

UFT 11.52 + Win7

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

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

最好的结果是打开了一堆已经存在的 IExplorer 窗口(选项卡)。

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

于 2015-02-19T18:52:46.303 回答
0

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

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

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

于 2013-07-29T12:09:39.657 回答
0

我遇到了同样的问题,我不得不退出补丁 QTPWEB_00090 才能让它工作。查看您是否安装了该 QTP 补丁并将其退出。

于 2013-09-19T20:19:51.277 回答
0

这已在QTPWEB_00107 - Windows 资源管理器中的 Web 浏览器控件识别中修复

于 2014-04-21T22:40:28.987 回答