讓自動程式碼 UI 測試在播放期間等候特定事件
在自動程式碼 UI 測試播放中,您可以指示測試等候系統發生特定事件,例如視窗顯示、進度列消失等等。若要這樣做,請使用適當的 UITestControl.WaitForControlXXX() 方法,如下表所述。如需使用 WaitForControlEnabled 方法來等候控制項啟用之自動程式碼 UI 測試的範例,請參閱逐步解說:建立、編輯和維護自動程式碼 UI 測試。
需求
- Visual Studio Ultimate, Visual Studio Premium
提示 |
---|
您可以使用 [自動程式碼 UI 測試編輯器]在動作前加入延遲。如需詳細資訊,請參閱HOW TO:使用自動程式碼 UI 測試編輯器,在 UI 動作前插入延遲。 |
UITestControl.WaitForControlXXX() 方法
UITestControl.WaitForControlXXX() 方法 |
描述 |
---|---|
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlReady ] |
等候控制項準備就緒以接受滑鼠和鍵盤輸入。引擎會針對所有動作隱含呼叫這個 API,以便等候控制項準備就緒,然後再進行任何作業。不過,在某些難以理解情節中,您可能必須進行明確呼叫。 |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlEnabled ] |
當精靈正透過呼叫伺服器,針對輸入進行某些非同步驗證時,等候控制項啟用。例如,您可以使用方法來等候精靈的 [下一步] 按鈕啟用。如需這個方法的範例,請參閱逐步解說:建立、編輯和維護自動程式碼 UI 測試。 |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlExist ] |
等候控制項出現在 UI 上。例如,在應用程式完成參數的驗證之後,您預期會出現錯誤對話方塊。驗證所花費的時間是可變的。您可以使用這個方法來等候錯誤對話方塊。 |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlNotExist ] |
等候控制項從 UI 中消失。例如,您可以等候進度列消失。 |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlPropertyEqual(System.String,System.Object) ] |
等候控制項的指定屬性具有給定的值。例如,您可以等候狀態文字變更為 [完成]。 |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlPropertyNotEqual(System.String,System.Object) ] |
等候控制項的指定屬性具有指定值的相反值。例如,您可以等候編輯方塊變成非唯讀狀態,亦即,可編輯狀態。 |
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForControlCondition(System.Predicate{Microsoft.VisualStudio.TestTools.UITesting.UITestControl}) ] |
等候指定的述詞傳回 true。這個方法可用於給定控制項的複雜等候作業 (例如 OR 條件)。例如,您可以等候直到狀態文字成為 Succeeded 或 Failed 為止,如下列程式碼所示:
|
[ M:Microsoft.VisualStudio.TestTools.UITesting.UITestControl.WaitForCondition``1(``0,System.Predicate{``0}) ] |
上述所有方法都是 UITestControl 的執行個體方法。這個方法則是靜態方法。這個方法也會等候指定的述詞成為 true,但是它可用於多個控制項的複雜等候作業 (例如 OR 條件)。例如,您可以等候直到狀態文字成為 Succeeded 或顯示錯誤訊息為止,如下列程式碼所示:
|
上述所有方法都具有下列行為:
如果等候成功,這些方法就會傳回 true。如果等候失敗,則傳回 false。
等候作業的隱含逾時是由 WaitForReadyTimeout 屬性所指定。此屬性的預設值是 60000 毫秒 (一分鐘)。
這些方法具有接受明確逾時 (以毫秒為單位) 的多載。不過,當等候作業產生控制項的隱含搜尋或應用程式忙碌中時,實際的等候時間可能會超過指定的逾時。
上述功能既強大且彈性,幾乎可滿足所有狀況。不過,如果這些方法無法滿足您的需求,而且您需要在程式碼中編寫 Wait 或 Sleep,建議使用 Playback.Wait() 來取代 Thread.Sleep() API。這樣做的原因包括:
您可以使用 ThinkTimeMultiplier 屬性來修改休眠的持續時間。根據預設,這個變數是 1,不過您可以增加或減少此值,以便變更整個程式碼的等候時間。例如,如果您要特別在慢速網路上測試或是測試其他較低效能的案例,可以在單一位置 (甚至在組態檔中) 將此變數變更為 1.5,以便在所有位置增加 50% 的額外等候時間。
Playback.Wait() 會在 for 迴圈的較小區塊內部呼叫 Thread.Sleep() (上述計算之後),同時檢查使用者取消\中斷作業。換言之,Playback.Wait() 可讓您在等候結束之前取消播放,而休眠可能無法這樣做,甚至擲回例外狀況。
提示 |
---|
[自動程式碼 UI 測試編輯器] 可讓您輕鬆地修改自動程式碼 UI 測試。您可以使用 [自動程式碼 UI 測試編輯器] 來找出、檢視和編輯測試方法。您也可以在 UI 控制項對應中編輯 UI 動作及其相關聯的控制項。如需詳細資訊,請參閱使用自動程式碼 UI 測試編輯器,編輯自動程式碼 UI 測試。 |
指引
如需詳細資訊,請參閱 測試 Visual Studio 2012的連續傳遞–第 5 章:自動化系統測試
請參閱
工作
HOW TO:使用自動程式碼 UI 測試編輯器,在 UI 動作前插入延遲