以此類推,我們可以判斷某個元素是否呈現、某個class是否append成功等一系列方法來判斷ajax是否執行完成。
如果網站使用了JQuery的動畫效果,我們在運行測試的時候其實可以disable JQuery的animation,一方面可以加快測試的速度,另一方面可以加強測試的穩定性(如果啟用了Animation,使用WebDriver驅動瀏覽器時可能會出現一些無法預料的異常)。
1 |
((JavascriptExecutor)driver).executeScript("jQuery.fx.off=true"); |
由于WebDriver要驅動瀏覽器,所以測試運行的時間比較長,我們可以并行跑測試以節省時間。如果你使用的是maven構建工具,可以配置surefire plugin時,在configruation節點加入以下配置。(網易Dagger框架支持的做法)
1 2 3 |
<parallel>classes</parallel> <threadCount>3</threadCount> <perCoreThreadCount>false</perCoreThreadCount> |
當測試fail的時候,如果當前使用的WebDriver實現了TakesScreenshot接口,我們就可以調用相應的方法截下當前瀏覽器呈現的web頁面,這樣有利于快速定位出錯的原因。
1 2 3 4 5 6 |
public void getScreenShot() { if (webDriver instanceof TakesScreenshot) { TakesScreenshot screenshotTaker = (TakesScreenshot) webDriver; File file = screenshotTaker.getScreenshotAs(savePath); } } |
如果頁面彈出了瀏覽器自帶的警告框(使用JavaScript的Alert方法),Selenium WebDriver在點選次警告框時會偶發性失敗。具體原因還未查明。解決方案是盡量不使用Alert方法的警告框,而是自己實現模式窗口(比如 Jquery UI的模式窗口)來實現警告框效果。這樣即保證了測試的穩定性,另外我們自己可以控制警告框的樣式,給用戶帶來更好的體驗。
經常更新Selenium的版本。注意經常上Selenium的官網看是否發布了新的版本,新的版本都修復了那些bug,如果包含你遇到的bug,就可以升級到目前的版本。
原文轉自:http://www.huangbowen.net/blog/2013/06/25/practice-of-webdriver/