WinAppDriver 等待時間設定技巧
做桌面程式的自動化測試,難免會涉及到控制元件的等待,比如當點選一個 Button 時,要等待一個 Window 的出現,然後在該 Window 上操作其他控制元件。最簡單粗暴的方式是使用Thread.Sleep()
方法,直接阻塞執行緒,當然這也是最不推薦的方式,因為太不優雅的可擴充套件性太差,等待時間是寫死的😒
那麼如何解決呢🙂
WinAppDriver 提供一種根據條件判斷是否中止的方法 Until()
, 它會在指定時間內 (Timeout) 執行操作,如果沒有返回標誌,就會一直執行,一旦發現返回標誌,就會退出執行,其中返回的標誌有三種
- 返回 true
- 執行時間超過設定的超時時間
- 在執行期間丟擲的異常不在期望的異常列表裡
public static void WaitAction(this WindowsDriver<WindowsElement> driver, Action action, int secondTimeOut = 60)
{
// 設定超時時間
var waiter = new DefaultWait<WindowsDriver<WindowsElement>>(driver)
{
Timeout = TimeSpan.FromSeconds(secondTimeOut),
};
// 設定忽略異常,一般當尋找控制元件而有沒有找到時會丟擲該異常,設定後在等待中一旦發生該異常,還是會繼續尋找控制元件
waiter.IgnoreExceptionTypes(typeof(InvalidOperationException));
// 等待有三種結束標誌,
// 1. 當返回值為true
// 2. 當發生異常不在異常列表裡
// 3. 超過設定時間
waiter.Until((s) =>
{
// 執行我們想要執行的操作, 一旦發生錯誤,便不會到第二步 return true,而前面我們已經設定好忽略的異常, 所以
// 這裡會在Timeout時間內一直執行我們的操作,直到達到要求為止
action?.Invoke();
return true;
});
}
上面程式碼是我封裝好一個方法,目的是動態獲取控制元件,不必每次去 Thread.Sleep()
相應的時間
WindowsElement addDataButton = null;
_earthDriver.WaitAction(() =>
{
addDataButton = _earthDriver.FindElementByAccessibilityId("MainAddDataButton");
},300);
if (addDataButton == null)
{
// Do something
}
else
{
// Do other things
}
然後我們在應用的時候,就可以向上面的指令碼一樣去實踐,這樣就極大的增加了測試指令碼的穩定性😎
相關文章
- 手機小技巧:小米手機時間24小時制怎麼設定
- Linux時間設定系統時間、硬體時間和時間服務Linux
- localStorage設定過期時間
- linux系統時間設定Linux
- js時間顯示設定JS
- localStorage設定儲存時間
- redis設定過期時間Redis
- Linux設定系統時間Linux
- MyBatis自動設定建立時間和更新時間MyBatis
- win10要如何設定更新時間_win10怎麼設定更新時間Win10
- Ubuntu 時間不準,怎麼設定NTP時間同步?Ubuntu
- CSS 技巧篇(六):display設定元素為行內元素時,元素之間存在間隙問題CSS
- Linux設定和修改時間與時區Linux
- JavaScript 設定cookie 過期時間JavaScriptCookie
- 積木報表設定時間
- layui laydate日期時間範圍,時間預設設定為23:59:59UI
- 電腦螢幕時間長短在哪裡設定 電腦螢幕息屏時間設定
- 雲伺服器Linux系統設定時間同步設定伺服器Linux
- 如何在 Ubuntu 上設定時間同步Ubuntu
- PHPUNIT MOCK設定時間 expectation 覆蓋PHPMock
- mongodb中如何設定當前時間?MongoDB
- 【Python】Python 使用http時間同步設定系統時間原始碼PythonHTTP原始碼
- Ubuntu開機等待網路時間較長Ubuntu
- JS設定時間格式為2010-01-01,以及時間加減JS
- element-ui 時間選擇器設定時間選擇範圍UI
- Ubuntu、CentOS修改時區、設定24小時時間格式教程。UbuntuCentOS
- JavaScript 設定Cookie過期時間無效JavaScriptCookie
- Windows ntp時間同步設定(bat指令碼)WindowsBAT指令碼
- win10怎樣固定時間關機_win10怎樣設定電腦關機時間設定Win10
- win10系統internet時間同步怎麼設定_win10系統internet時間同步如何設定Win10
- Nodered學習記錄-時間戳和時區設定時間戳
- ssh登入慢,等待時間長的問題
- [20211111]19c latch free等待時間分析.txt
- win10 時間怎麼設定24小時格式_win10如何設定24小時制Win10
- Win10系統怎麼設定回滾時間 win10系統設定回滾時間的方法Win10
- win10電腦怎麼設定英國時間_win10系統設定英國時間的方法Win10
- win10待機時間長短怎麼設定 windows10設定待機休眠時間方法介紹Win10Windows
- 如何給localStorage設定一個過期時間?