章節十3、1-隱式等待和顯式等待

1、當咱們在刷新頁面操做時,頁面還未加載完成或者說頁面正處於加載中的狀態,這個時候咱們可能可以定位到元素(也可能沒法定位到),但沒法進行操做,所以咱們須要設置必定的等待時間,等待頁面徹底加載完成後才進行元素定位點擊操做。(網絡延遲、selenium操做元素時過快等都有可能出現元素沒法定位)html

 

2、selenium WebDriver 中有兩種等待方式:隱式等待、顯式等待。java

 

3、隱式等待。git

一、當咱們告訴driver須要隱式等待時,就是說它會等待全部元素,不會只等待單個元素。github

二、在建立driver時,爲瀏覽器對象設置一個隱式等待時間。若是若是元素不能當即可用就等待一段時間,直到拿到某個元素爲止。api

三、在使用隱式等待的時候,實際上瀏覽器會在你本身設定的時間內不斷的刷新頁面去尋找咱們須要的元素。瀏覽器

四、隱式等待的默認等待時間爲0。網絡

五、若是咱們設置等待時間爲3秒,那麼WebDriver 就會先等待3秒,在3秒內拿到可用元素後就會當即執行操做,若是還不能在頁面上找到可用元素,就會拋出異常。學習

六、不要設置等待時長太長,這樣會會影響執行效率。ui

 

4、顯式等待spa

一、若是有元素須要很長時間才能加載可用,就可使用顯式等待。

二、針對特定元素,爲某一元素定製的。讓元素等待直到知足某個條件才執行。

三、顯式等待時咱們能夠定義的,等待某個條件發生,而後再繼續執行代碼。

WebDriver提供的指望條件有:

alertIsPresent

elementSelectionStateToBe

elementToBeClickable  元素能夠點擊

elementToBeSelected  元素能夠選擇

frameToBeAvailableAndSwitch Tolt

invisibilityOfElementLocated

presenceOfElementLocated

textToBePresentInElementLocated

textToBePresentInElementValue

titleContains

titleIs

visibilityOfElementLocated

 全部指望條件有:https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html

 

注意:

一、隱式等待不要和顯式等待一塊兒混合使用,這樣會致使等待時長不可控。

二、顯式等待和隱式等待時selenium WebDriver提供的。

三、在前面的演示章節中咱們用到了「Thread.sleep(2000)」,這是java提供的強制等待,表示無論條件是否知足,都會等待2秒後再繼續執行其它操做。

 

若是有不明白的小夥伴能夠加羣「555191854」問我,羣裏都是軟件行業的小夥伴能夠相互一塊兒學習討論。

相關文章
相關標籤/搜索