我们正在使用UFT 14.52测试GUI。对于每个Popup,Schema,View,我们都有一个组件。我想为每个组件添加验证点,以便我可以验证应用程序处于正确的状态。
例如: 我确实有此Popup和一个处理Popup的组件(选择街道,然后单击按钮)。
当组件启动时,我要验证弹出窗口是否启动。使用UFT Checkpoints,通过将enable用作标识,它可以完美工作。
但是,如果我想要最后一个验证点(检查是否通过启用关闭了弹出窗口),我确实会像预期的那样收到“来自uft的未找到对象异常”,因为给定的弹出窗口已关闭。用JavaObject.Exist(5)
验证对象是否不存在是不可行的,因为它实际上将等待超时然后返回状态。
有什么解决方法吗?是否与javaObject.NonExists(5)
类似?最后的状态验证是否有用?
答案 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进行进一步的阅读)。