2013-01-17 51 views
4

我已經使用了.Exist方法,但是我最近轉到了一個使用QTP 11的新項目(現在使用WPF應用程序)(而之前我使用了QTP 10)。.Exist超時在QTP中如何工作?

現在我想通過使用來檢查消息是否存在。奇怪的是,我只在〜23秒後得到了一個結果,而不是我期待的2秒。

超時是如何工作的?在之前的項目中,在確定對象不存在之前,使用將等待2秒鐘。 QTP幫助文件也表示它應該只等待2秒(指定的超時參數)。 現在,它好像正在等待超時參數(2秒)和對象同步超時(20秒)。

此外,智能識別已禁用,因此它不應該等待。使用Object Repository突出顯示對象會立即表示該對象不存在。

超時行爲在QTP v10和v11之間有變化嗎? 爲什麼說一個物體不存在需要很長時間?

回答

0

確保您沒有爲對象庫中的測試對象啓用「智能識別」。這可能會阻礙。

+0

我檢查了每一個我遇到的問題WPFbutton對象;事實證明他們的智能身份識別功能轉爲「假」,並且灰顯。 – Eptin

+0

對於父對象怎麼樣?在測試結果中,是否有任何跡象表明正在使用智能身份驗證? – BrianJM

+0

父對象沒有智能標識。測試父窗口的存在非常快(並且父窗口確實存在)。 – Eptin

0

您遇到的額外時間是默認的超時設置,默認設置爲20秒。任何Wait或Exist定時器將在默認超時之上堆疊。

它可以在測試設置中更改:

Test Settings > Run > Object synchronization timeout - set in seconds 

或VBScript中:

Setting("DefaultTimeout") = 4000 'set in milliseconds 
+0

但是,我不應該通過超時參數_override_這個.Exist的默認超時設置嗎?我的意思是,這就是爲.Exist聲明傳遞一個數字的關鍵所在,不是嗎?爲什麼我的超時參數被添加到默認超時而不是替換它? – Eptin

2

的存在的方法並不只爲最後的目標工作。 它分層次地工作 - 這意味着此方法檢查每個父對象之前檢查最後一個。 超時只適用於最後一個對象。 如果你想立即收到了答案,我建議你使用下面的代碼 -

if WPFWindow("x").Exist(0) Then 
    if WPFWindow("x").WPFButton("y").Exist(0) Then 
    'action 
    End if 
End if