检查点验证对象不存在

Checkpoint Validate non existence of Object

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

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

组件启动时,我想验证弹出窗口是否已启动。使用 UFT 检查点,通过使用启用作为标识,这可以完美地工作。

但是如果我想在末尾有一个验证点(通过启用检查弹出窗口是否关闭)我确实得到了预期的 "object not found exception from uft",因为给定的弹出窗口已关闭。通过 JavaObject.Exist(5) 验证对象不存在是不可行的,因为它实际上会等待超时,然后 return 状态。

有什么解决方法吗?有没有类似javaObject.NonExists(5)的东西?最后这个状态验证有用吗?

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

如果我的理解是正确的,你想模仿 Exist 的行为,这样如果条件失败(对象 does 在这种情况下存在)那么函数不会立即 return False 而是等待超时以使其变为 True (对象 not 存在)。

如果是这样你可以试试这个:

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 但是当我用 Web addin 尝试它时它没有它工作(我不使用Java)。

我认为应该需要它,因为 UFT 会在找到对象时缓存该对象,但也许 Exist 会清除此缓存(进一步阅读此 caching mechanism)。