Selenium+Java(六)Selenium 強制等待、顯式等待、隱實等待


前言

在實際測試過程中,由於網速或性能方面的原因,打開相應的網頁后或在網頁上做了相應的操作,網頁上的元素可能不會馬上加載出來,這個時候需要在定位元素前等待一下,等元素加載出來后再進行定位,根據實際使用選擇需要的等待方式。

一、強制等待

 強制等待是利用time模塊的sleep方法來實現,最簡單粗暴的等待方法。但是此方法影響腳本的執行效率,所以不太推薦使用此方法。

//強制等待1S
Thread.sleep(1000);

二、隱式等待

 隱式等待只能作用於元素的等待。

如果元素在指定的時間內找到,則不會繼續等待,否則在指定時間內未找到元素則拋出NoSuchElementException。
作用域是全局的,跟driver的生命周期一樣,一般定義在父類中,只要設置隱式等待后,頁面所有的元素都會被綁定這種等待機制,只需設置一次,全局有效(只作用於元素),直到driver實例被關閉。

//隱式等待等待5秒
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

三、顯式等待

除了作用於元素等待還可以實現各種場景的等待,例如頁面加載等。
智能的等待方式,元素在指定的時間內找到,則不會繼續等待,否則拋出TimeOutException。
非全局設置,可以針對不同的元素綁定不同的等待機制。

//顯式等待3秒
WebDriverWait wait = new WebDriverWait(driver, 3);
//3秒內找不到此元素,TimeOutException報錯
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.name("wd")))

擴展

ExpectedConditions其他用法

1. titleIs判斷當前頁面的title是否等於預期。
2. titleContains判斷當前頁面的title是否包含預期字符串。
3. urlToBe判斷當前頁面的url是否等於預期。
4. urlContains判斷當前頁面的url是否包含預期字符串。
5. presenceOfElementLocated判斷元素是否出現,出現就通過。
6. visibilityOfElementLocated判斷某個元素是否可見,可見代表元素非隱藏。
7. elementToBeSelected頁面元素處於被選中狀態。


ExpectedConditions還有很多其他方法,在此不一一列舉。


免責聲明!

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



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