2012-11-01 57 views
2

在QTP中,代码中是否有任何方法检查对象存储库中是否存在特定对象。我曾尝试下面的代码:QTP - 对象存储库中是否存在对象

If JavaWindow(className).JavaDialog(dialogName).Exist Then 
    doThisStuff 
Else 
    doThisStuffInstead 
End If 

但是从我从因特网和闪闪发光,这是类似于ISVISIBLE方法,只能导致如果指定的对象是当前可见。当我使用上面的代码时,我收到一个“JavaDialog对象没有在对象库中找到。”有没有方法或任何方法来防止这个错误,并检查对象是否确实存在?

谢谢您的时间

+1

'className'和'dialogName'指的是什么?这些* *名称都存在于对象库中的对象中,还是使用[描述性编程](http://mercuryquicktestprofessional.blogspot.nl/2006/11/descriptive-programming-simplified.html)? – AutomatedChaos

+0

谢谢你的回答。我试图创建一个方法,有时变量className有一个对话框,有时它没有。我想出了类似于检查的答案。 – Syrius013

回答

3

我不知道你想在这里完成,人们通常知道,如果在对象存储库中存在的对象在使用它之前是什么。怀疑通常是否在AUT(被测应用程序)中有相应的控制。

如果你真正面对,有时对象是在仓库中,有时它不是(我能想到的几种方法要做到这一点,但他们没有多大意义),那么你可以使用VBScript的error handling mechanism的情况。

On Error Resume Next ' Turn off error handling 
' Just check if object is in repository, there's no need to do anything with it 
Dim Exists: Exists=JavaWindow(className).JavaDialog(dialogName).Exist 
If Err.Number <> 0 Then 
    doThisStuff 'Exists is still empty 
Else 
    doThisStuffInstead ' Exists is properly set 
End If 
On Error Goto 0 ' Resume regular error handling 
+0

希望你好我的编辑。如果不是,请撤消它。 (我将在稍后删除此评论。) – TheBlastOne

+0

如果您在接下来的错误恢复之前声明Exists,在Exist调用后立即执行错误转为0,然后根据IsEmpty(Exists)进行分支, 。这将确保doThisStuff和DoThisStuffInstead将被启用错误处理调用,这是一个好主意,原因很明显。 – TheBlastOne

0

所以,从你的错误,要么在出现的对话框是你存储在仓库或者你没有它存在的不同。 您是否检查过它真的存在于知识库中?你可以试着找到这个元素按钮。 使用“如果对象不在存储库中 - 跳过这一步”的方法并不是一个好主意。 1.如果对象未保存在存储库中,为什么要跳过测试/部分测试? 2.如果它不存在,那么您需要确保存储它。

我会假设这个“缺失”对象可能具有一些值,通过它来匹配不同于测试的存储库中的对象。您可以通过手动设置QTP想要查找的值来调整“匹配”机制。