【问题标题】:Double number of items returned by Desktop.ChildObjectsDesktop.ChildObjects 返回的项目数翻倍
【发布时间】:2013-07-23 14:33:50
【问题描述】:

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

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

Set objChildren = Desktop.ChildObjects( descBrowser )

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

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

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

【问题讨论】:

  • 如果你 .Highlight 孩子,可能是每个浏览器,你得到两个亮点?因为浏览器和它的标签是一个浏览器对象?
  • 如果我依次突出显示它们,那么是的,每个浏览器都有两个突出显示。但奇怪的是它在另一台测试机器上运行良好,可以看到正确数量的浏览器。两台机器都是 Windows 7 64 位。
  • 不是有一些暗配置设置吗...不记得了...嗯..
  • 在这种情况下我对黑暗艺术的了解有限,这两天我一直在寻找答案,但还没有运气......

标签: browser qtp child-objects


【解决方案1】:

UFT 11.52 + Win7

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

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

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

谁能提供检查已安装补丁的步骤?

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 这正是我作为解决方法所做的 :) 但我仍然想知道为什么会这样......
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-10
        • 2012-07-15
        • 2022-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多