Testing UFT/QTP-找不到父对象

Testing UFT/QTP-找不到父对象,testing,vbscript,qtp,hp-uft,Testing,Vbscript,Qtp,Hp Uft,我无法访问testcase中的对象。 对象是一个选项卡,附加到我的应用程序中的(子)窗口。 在测试用例之前和之后,选项卡和选项卡所连接的窗口被对象spy fine找到,但是当测试用例运行时,出现下面的错误 找不到“[ActiveX]”对象的父对象“[Window]”(类窗口)。验证父属性是否与应用程序中当前显示的对象匹配 我访问对象是为了: VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab") 我是UFT新手,所以我搜

我无法访问testcase中的对象。 对象是一个选项卡,附加到我的应用程序中的(子)窗口。 在测试用例之前和之后,选项卡和选项卡所连接的窗口被对象spy fine找到,但是当测试用例运行时,出现下面的错误

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

我访问对象是为了:

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

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

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

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

VbWindow("ApplicationWindow").ActiveX("Tab")
2.检查前后的属性。我指的是肩并肩的验证。可能存在财产错配的可能性

3.使用刷新对象方法

Window("Calculator").RefreshObject
4.从选项卡对象查询您的父对象

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")

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

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

VbWindow("ApplicationWindow").ActiveX("Tab")
2.检查前后的属性。我指的是肩并肩的验证。可能存在财产错配的可能性

3.使用刷新对象方法

Window("Calculator").RefreshObject
4.从选项卡对象查询您的父对象

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说:

找不到“[ActiveX]”对象的父对象“[Window]”(类窗口)

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


作为一种快捷方式,您可以尝试使用它来完成以下步骤,并建议一种修复测试的方法。

警告:下面是详细的解释,您可以跳到最后一段,以获得建议的快速成功


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

VbWindow("ApplicationWindow").Window("SubWindow").ActiveX("Tab")
UFT说:

找不到“[ActiveX]”对象的父对象“[Window]”(类窗口)

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


作为一种快捷方式,您可以尝试使用它来完成这些步骤,并建议一种修复测试的方法。

好的,您说窗口和附加的选项卡是由object spy找到的。能否确保脚本能够找到ApplicationWindow和SubWindow并与之交互?对象的智能标识属性是否设置为True?如果是,请将其更改为false,并尝试从对象存储库中高亮显示该对象。如果对象有多个匹配项,UFT将弹出一条消息,告诉您是这样的,如果是这样,您可以尝试优化您的对象属性OK,您说窗口和附加的选项卡是由object spy找到的。能否确保脚本能够找到ApplicationWindow和SubWindow并与之交互?对象的智能标识属性是否设置为True?如果是,请将其更改为false,并尝试从对象存储库中高亮显示该对象。如果对象有多个匹配项,UFT将弹出一条消息,告诉您是这样的,如果是这样,您可以尝试优化对象属性感谢您的回复@Motti对象似乎是一样的,所以我尝试了维护运行模式,但我得到的错误是,该模式被禁用,无法在其中运行操作。OR是本地的(未连接共享)。我得到了两个与测试相关的函数库。我以助理的身份运行UFT。你能帮我解决这个问题吗?@Twiebie,对不起,我不知道为什么要禁用维护运行模式。谢谢你的回复@Motti,对象似乎是一样的,所以我尝试了维护运行模式,但我得到的错误是该模式被禁用,无法运行其中的操作。OR是本地的(未连接共享)。我得到了两个与测试相关的函数库。我以助理的身份运行UFT。你能帮我解决这个问题吗?@Twiebie,对不起,我不知道为什么要禁用维护运行模式。我尝试了所有步骤,但仍然得到了丢失的对象。两个MsgBox都会抛出一个不存在对象的错误。我的代码现在看起来像
vbWindow(“ApplicationWindow”).RefreshObject vbWindow(“ApplicationWindow”).Window(“子窗口”)RefreshObject Set objParent=vbWindow(“ApplicationWindow”).ActiveX(“Tab”).GetTOProperty(“父”)Msgbox objParent.getroperty(“text”)Set objParent=vbWindow(“ApplicationWindow”).Window(“子窗口”).ActiveX(“Tab”).GetTOProperty(“父项”)Msgbox objParent.GetROProperty(“文本”)
尝试在对象存储库中添加选项卡,并突出显示前后。如果仍然存在问题,请捕获激活前后的属性,然后检查属性比较。此外,如果对象无法识别您,请尝试使用“从应用程序更新”选项。如果允许,您可以在之前和之后发布父对象的属性吗?我尝试了所有步骤,但仍然获得了缺少的对象。两个MsgBox都会抛出一个不存在对象的错误。我的代码现在看起来像