讓自動程式化 UI 測試在播放期間等候特定事件

 

如需 Visual Studio 2017 的最新文件請參閱 Visual Studio 2017 文件

在自動程式化 UI 測試播放中,您可以指示測試等待發生特定事件 (例如出現視窗、進度列消失等)。 若要這樣做,請使用下表所述的適當 UITestControl.WaitForControlXXX() 方法。 如需等候控制項來使用啟用的自動程式碼 UI 測試的範例 WaitForControlEnabled 方法,請參閱 逐步解說︰ 建立、 編輯和維護自動程式碼 UI 測試

Requirements

Visual Studio 企業版

System_CAPS_ICON_tip.jpg 提示

您也可以使用自動程式化 UI 測試編輯器,以新增動作之前的延遲。 如需詳細資訊,請參閱 How to︰ 插入延遲之前 UI 動作使用的自動程式碼 UI 測試編輯器

Uitestcontrol.waitforcontrolxxx () 方法

WaitForControlReady

等候控制項準備好接受滑鼠和鍵盤輸入。 引擎會先針對所有等待控制項備妥的動作,隱含地呼叫這個 API,然後再進行任何作業。 不過,在某些罕見的情況下,您可能必須執行明確呼叫。

WaitForControlEnabled

當精靈藉由呼叫伺服器來執行輸入的一些非同步驗證時,等候啟用控制項。 例如,您可以等候方法 下一步 是啟用 () 精靈] 的按鈕。 如需這個方法的範例,請參閱 逐步解說︰ 建立、 編輯和維護自動程式碼 UI 測試

WaitForControlExist

等候要出現在 UI 上的控制項。 比方說,在應用程式完成參數驗證後,您預期會出現錯誤對話方塊。 驗證所花費的時間是變數。 您可以使用這個方法來等候錯誤對話方塊。

WaitForControlNotExist

等候控制項從 UI 消失。 例如,您可以等候進度列消失。

WaitForControlPropertyEqual

等候控制項的指定屬性具有給定值。 等待變更的狀態文字,例如 完成

WaitForControlPropertyNotEqual

等候控制項的指定屬性具有指定值的相反值。 例如,您等候編輯方塊變成非唯讀狀態,亦即可供您進行編輯。

WaitForControlCondition

等候指定的述詞傳回 true。 這可以用於指定控制項上的複雜等候作業 (例如 OR 條件)。 例如,您可以等候的狀態文字是 成功失敗 如下列程式碼所示︰

  
// Define the method to evaluate the condition   
private static bool IsStatusDone(UITestControl control)   
{   
    WinText statusText = control as WinText;   
    return statusText.DisplayText == "Succeeded" || statusText.DisplayText == "Failed";   
}   
  
// In test method, wait till the method evaluates to true   
statusText.WaitForControlCondition(IsStatusDone);  
  

WaitForCondition < T>

所有先前的方法都是 UITestControl 的執行個體方法。 此方法是靜態方法。 這個方法也會等候指定的述詞成為 true,但可用於多個控制項上的複雜等候作業 (例如 OR 條件)。 例如,您可以等候的狀態文字是 成功 或直到出現錯誤訊息,如下列程式碼所示︰

  
// Define the method to evaluate the condition   
private static bool IsStatusDoneOrError(UITestControl[] controls)   
{   
    WinText statusText = controls[0] as WinText;   
    WinWindow errorDialog = controls[1] as WinWindow;   
    return statusText.DisplayText == "Succeeded" || errorDialog.Exists;   
}   
  
// In test method, wait till the method evaluates to true   
UITestControl.WaitForCondition<UITestControl[]>(new UITestControl[] { statusText, errorDialog }, IsStatusDoneOrError);  
  

所有這些方法都具有下列行為:

如果等候成功,方法會傳回 true;如果等候失敗則傳回 false。

等候作業的隱含逾時由 WaitForReadyTimeout 屬性。 此屬性的預設值是 60000 毫秒 (一分鐘)。

方法具有可採用明確逾時 (以毫秒為單位) 的多載。 不過,當等候作業導致控制項的隱含搜尋,或當應用程式忙碌時,實際的等候時間可能會超過指定的逾時。

先前的函式功能強大且具有彈性,且幾乎可滿足所有條件。 不過,以防這些方法無法滿足您的需求,您需要撰寫任何程式碼 等候, ,或 睡眠 在您的程式碼,建議您使用 Playback.Wait(),而不是 Thread.sleep API。 這樣做的原因是:

您可以使用 ThinkTimeMultiplier屬性,即可修改進入睡眠狀態的持續時間。 根據預設,此變數是 1,但是您可以增加或減少以變更整個程式碼的等候時間。 例如,如果您要特意透過慢速網路測試,或處於某些效能較慢的情況中,您可以在某個位置上將這個變數 (或甚至在組態檔中) 變為 1.5,在所有位置額外增加 50%。

檢查使用者取消\中斷作業時,Playback.Wait() 會在 for 迴圈的較小區塊中內部呼叫 Thread.Sleep() (在上述計算後)。 換句話說,Playback.Wait() 可讓您在等候結束,且睡眠無法或擲回例外狀況之前,取消播放。

System_CAPS_ICON_tip.jpg 提示

自動程式碼 UI 測試編輯器可讓您輕鬆地修改自動程式碼 UI 測試。 您可以使用自動程式碼 UI 測試編輯器,尋找、檢視和編輯您的測試方法。 您也可以在 UI 控制項對應中編輯 UI 動作和其相關聯控制項。 如需詳細資訊,請參閱 使用自動程式碼 UI 測試編輯器編輯自動程式碼 UI 測試

指引

如需詳細資訊,請參閱 測試持續傳遞與 Visual Studio 2012-第 5 章︰ 自動化系統測試

若要測試您的程式碼中使用 UI 自動化
建立自動程式碼 UI 測試
逐步解說︰ 建立、 編輯和維護自動程式碼的 UI 測試
自動程式碼的 UI 測試的結構
支援的組態與平台的自動程式碼的 UI 測試和動作記錄
如何︰ 使用自動程式碼的 UI 測試編輯器,在 UI 動作前插入延遲

顯示: