检查点验证不存在对象

时间:2019-05-07 13:09:44

标签: vbscript hp-uft

我们正在使用UFT 14.52测试GUI。对于每个Popup,Schema,View,我们都有一个组件。我想为每个组件添加验证点,以便我可以验证应用程序处于正确的状态。

例如: 我确实有此Popup和一个处理Popup的组件(选择街道,然后单击按钮)。

Popup

当组件启动时,我要验证弹出窗口是否启动。使用UFT Checkpoints,通过将enable用作标识,它可以完美工作。

enabled as identification

但是,如果我想要最后一个验证点(检查是否通过启用关闭了弹出窗口),我确实会像预期的那样收到“来自uft的未找到对象异常”,因为给定的弹出窗口已关闭。用JavaObject.Exist(5)验证对象是否不存在是不可行的,因为它实际上将等待超时然后返回状态。

有什么解决方法吗?是否与javaObject.NonExists(5)类似?最后的状态验证是否有用?

1 个答案:

答案 0 :(得分:2)

要注意的一件事是Exist的timeout参数没有默认为零,因此如果您希望它在对象不存在时立即返回,则应使用obj.Exist(0)

如果我的理解是正确的,则您想模仿Exist的行为,以便如果条件失败(在这种情况下对象不存在),则函数不会返回False立即True,但要等待超时变成Public Function NotExist(ByRef test_object, ByVal timeout) Deadline = DateAdd("s", timeout, Now) While test_object.Exist(0) If DateDiff("s", Now, Deadline) < 0 Then NotExist = False Exit Function End If test_object.RefreshObject ' not sure if this is needed Wend NotExist = True End Function RegisterUserFunc "JavaObject", "NotExist", "NotExist" (对象存在)。

如果是这样,您可以尝试以下方法:

RefreshObject

这里唯一微妙的部分是Exist,我认为这是必需的,但是当我使用 Web插件(我不使用Java)进行尝试时,没有它就可以工作。

我认为应该这样做,因为UFT会在找到对象后对其进行缓存,但是也许constructor(private router: Router) { router.events.subscribe((val) => { console.log(val); }); } 会清除该缓存(对此caching mechanism进行进一步的阅读)。