UFT/QTP - 找不到父对象

UFT/QTP - Can not find Objects parent

我无法访问测试用例中的对象。 该对象是一个选项卡,附加到我的应用程序中的 (Sub)Window。 在测试用例之前和之后,选项卡和附加到选项卡的 window 被对象间谍很好地找到,但是当测试用例运行时,下面的错误出现了。

找不到“[ActiveX]”对象的父对象“[Window]”(class Window)。验证父属性是否与您的应用程序中当前显示的对象相匹配。

我这样访问对象:

VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab")

我是 UFT 的新手,所以我搜索了一段时间并找到了一些解决方案,但它们似乎对我不起作用,因为它们总是与浏览器测试相关,而不是应用程序。

只是想找出问题的根本原因。

1.Try 使用顶级容器(跳过下一级容器)并检查您是否存在父容器。

VbWindow("ApplicationWindow").ActiveX("Tab")

2.Check前后的属性。我的意思是并排验证。可能 属性 不匹配。

3.Use 刷​​新对象方法。

Window("Calculator").RefreshObject

4.Query Tab 对象中的父项

Set objParent =  VbWindow("ApplicationWindow").ActiveX("Tab").GetTOProperty("parent")
Msgbox objParent.GetROProperty("text")
Set objParent =  VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab").GetTOProperty("parent")
Msgbox objParent.GetROProperty("text")

警告:后面有很长的解释,您可以跳到最后一段以获得建议的快速取胜。


当 UFT 从上到下识别对象时,您的对象层次结构是:

VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab")

UFT 表示:

Cannot find the "[ActiveX]" object's parent "[Window]" (class Window).

这意味着 id 确实 找到了 VbWindow("ApplicationWindow") 但找不到 Window("SubWindow")。尝试突出显示 VbWindow 以确保 UFT 正在识别您期望的对象。然后使用 object spy 检查您认为 UFT 应该找到的 window。然后将对象存储库中的属性与您看到的 window 的属性进行比较,找出这些描述有何不同。

作为快捷方式,您可以尝试使用 Maintenance Run Mode,它应该会为您执行这些步骤并建议修复测试的方法。