2

在 QTP 中,代码中有什么方法可以检查对象存储库中是否存在特定对象。我尝试了以下代码:

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

但从我从互联网上了解到的情况来看,这类似于 isVisible 方法,只有在指定对象当前可见时才会产生 true 。当我使用上面的代码时,我收到“在对象存储库中找不到 JavaDialog 对象”。有没有一种方法或任何方法可以防止这种错误并检查该对象是否确实存在?

感谢您的时间

4

2 回答 2

3

我不确定您要在这里完成什么,通常在使用对象之前知道对象存储库中是否存在对象。疑问通常是在AUT(Application Under Test)中是否有相应的控件。

如果您真的遇到有时对象在存储库中而有时不在的情况(我可以想到几种方法来实现,但没有一种方法有多大意义),那么您可以使用 VBScript 的错误处理机制

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
于 2012-11-01T22:13:32.917 回答
0

因此,根据您收到的错误,出现的对话框与您存储在存储库中的对话框不同,或者您没有它。您是否检查过它是否真的存在于存储库中?您可以尝试仅找到此元素按钮。使用“如果对象不在存储库中 - 跳过该步骤”的方法并不是一个好主意。1. 如果对象没有保存在存储库中,为什么要跳过测试/部分测试?2. 如果没有,请务必妥善保管。

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

于 2012-11-02T09:29:22.313 回答