2012-11-01 92 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想要查找的值來調整「匹配」機制。