Selenium Webdriver——設置等待時間


1.隱式等待

implicitlyWait():

當使用了隱士等待執行測試的時候,如果 WebDriver沒有在 DOM中找到元素,將繼續等待,超出設定時間后則拋出找不到元素的異常

當查找元素或元素並沒有立即出現的時候,隱式等待將等待一段時間再查找 DOM,默認的時間是0

一旦設置了隱式等待,則它存在整個 WebDriver 對象實例的聲明周期中,隱式的等到會讓一個正常響應的應用的測試變慢,

它將會在尋找每個元素的時候都進行等待,這樣會增加整個測試執行的時間。

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

2.顯示等待

WebDriverWait():webdriver的針對某個元素的明確等待(explicitly wait)

詳細格式如下:

WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)

driver - WebDriver 的驅動程序(Ie, Firefox, Chrome 或遠程)

timeout - 最長超時時間,默認以秒為單位

poll_frequency - 休眠時間的間隔(步長)時間,默認為0.5 秒

ignored_exceptions - 超時后的異常信息,默認情況下拋NoSuchElementException 異常。

 1     /**
 2      * 在給定的時間內去查找元素,如果沒找到則超時,拋出異常
 3      * */
 4     public static void waitForElementToLoad(WebDriver driver, int timeOut, final By By) {
 5         try {
 6             (new WebDriverWait(driver, timeOut)).until(new ExpectedCondition<Boolean>() {
 7 
 8                 public Boolean apply(WebDriver driver) {
 9                     WebElement element = driver.findElement(By);
10                     return element.isDisplayed();
11                 }
12             });
13         } catch (TimeoutException e) {
14             Assert.fail("超時!! " + timeOut + " 秒之后還沒找到元素 [" + By + "]");
15         }
16     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM