Vbscript 检查点验证对象不存在

Vbscript 检查点验证对象不存在,vbscript,hp-uft,Vbscript,Hp Uft,我们正在用UFT14.52测试GUI。对于每个弹出窗口、模式、视图,我们都有一个组件。我想为每个组件添加验证点,以便验证应用程序是否处于正确的状态 例如: 我有这个弹出窗口和一个处理弹出窗口的组件(选择街道,点击按钮) 当组件启动时,我想验证弹出窗口是否打开。对于UFT检查点,通过使用enabled作为标识,它可以完美地工作 但是,如果我希望在最后有一个验证点(检查弹出窗口是否通过enabled关闭),我确实会像预期的那样得到一个“object not found exception fro

我们正在用UFT14.52测试GUI。对于每个弹出窗口、模式、视图,我们都有一个组件。我想为每个组件添加验证点,以便验证应用程序是否处于正确的状态

例如: 我有这个弹出窗口和一个处理弹出窗口的组件(选择街道,点击按钮)

当组件启动时,我想验证弹出窗口是否打开。对于UFT检查点,通过使用enabled作为标识,它可以完美地工作

但是,如果我希望在最后有一个验证点(检查弹出窗口是否通过enabled关闭),我确实会像预期的那样得到一个“object not found exception from uft”,因为给定的弹出窗口是关闭的。通过
JavaObject验证对象不存在。存在(5)
是不可行的,因为它实际上会等待超时,然后返回状态


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

需要注意的一点是,
Exist
的超时参数没有默认为零,因此如果要在对象不存在时立即返回,则应使用
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"
Public Function NotExist(ByRef test_对象,ByVal超时)
截止日期=日期添加(“s”,超时,现在)
测试对象存在时(0)
如果DateDiff(“s”,现在是截止日期)<0,则
NotExist=False
退出功能
如果结束
test_object.RefreshObject'不确定是否需要
温德
NotExist=True
端函数
RegisterUserFunc“JavaObject”、“NotExist”、“NotExist”
这里唯一微妙的部分是
RefreshObject
,我认为它是必需的,但当我使用Web插件尝试它时,它没有它(我不使用Java)


我认为应该需要它,因为UFT会缓存找到的对象,但可能
Exist
会清除此缓存(进一步阅读此内容)。

如果不是javaObject.Exist(5),则
应该适用于您的requirement@DavejavaObject.Exist的否定(5)无法工作,因为脚本实际上会等待5秒,然后返回false(然后被not否定)。所以显式等待将转换为显式等待…是的-没错
Exist
是布尔值,并测试这两个条件(true=存在,false=不存在),因此不存在
不存在的
——它本质上与同名的
Exist
相同。如果您只想加快速度,如果您不希望对象出现,可以将等待时间减少到半秒。如果您想检查对象是否存在而不等待,只需将
0
作为超时传递,则
Exist
将在找到对象时或超时后返回(以先到者为准)。正如@Dave所说,逻辑上不需要
NotExist
。也许我们误解了这个问题,如果是这样,请尝试澄清。我刚刚写完一个答案,假设你的问题更复杂:(好吧,我将添加
Exist(0)
,并保留它,以防将来对某人有所帮助。