Selenium 三大延時等待

2022-08-23 22:18:16 字數 1305 閱讀 3671

在做自動化時,有時候定位或操作元素的條件還不滿足,如頁面還沒有載入完、元素沒有顯示出來、不可點選等 ,會導致元素找不到,這個時候需要延時等待方可進行元素的操作

selenium的三大等待

硬性等待也稱為強制等待、執行緒休眠,採用方式如下

thread.sleep(3000);----------表示執行緒等待3秒

硬性等待使用簡單,但由於不知道乙個執行緒需要等待多久,時間設定小了不行,設定長了往往會造成時間的浪費,影響效能

driver.manage().timeouts().implicitlywait(6, timeunit.seconds);

timeouts()---->驅動超時物件,該物件可以進行多種場景的等待超時設定,而implicitlywait即為隱式等待,會在設定的時間內不停查詢元素或超時

隱式等待一般是在driver初始化之後設定,只用設定一次,全域性生效可用,只適用於找元素findelement方法,其它方法沒有等待效果

找到元素後就停止了,如果找到元素的時間大於設定的時間,則報乙個找不到元素的異常

隱式等待相對靈活,但是設定是針對全域性的,並不是所有的元素都需要等待,也不能適用條件更複雜的情況,如元素肉眼不可點選,元素不可見時不能用

顯式等待通常是自定義的一段**,用來等待某個條件發生後再繼續執行後續**

例子1:自帶的條件

顯式等待每隔一段時間掃瞄一次頁面,檢查元素是否滿足結果條件,檢查元素是否存在,不存在則繼續等待,直到找到或超時, 該方式不是全域性設定 ,推薦使用

當頁面的某些元素需要滑鼠放上去才展示出來時,顯示等待的presenceoofelementlocatde方法相當隱式等待,不可直接點選,需要配合滑鼠操作才可點選

例2:自定義條件

自定義條件需要自定義我們需要等待的條件

selenium 三大等待方式

一 強制等待 time.sleep 硬性等待,可以放在任意地方,等待時間為設定的時長,本質是暫停 執行,每需要用到一次,就要設定一次。二 隱性等待 implicitly wait 啟動瀏覽器後只需要設定一次,只能用於等待元素出現,等待的最長時間為設定的時長,一旦等待的元素出現,即停止等待。三 顯性等...

selenium中元素的三大等待應用

強制等待 一般在除錯指令碼時會執行,在正式的指令碼中是不會加強制等待的,會導致執行時間增長,效率過低 import time time.sleep 4 4代表等待時間,單位為秒隱式等待 隱式等待為全域性,只需設定一次,這設定的等待時間不是固定,不影響指令碼執行的速度,以輪詢的方式判斷元素是否存在,存...

selenium的三種等待

1 強制等待 不管頁面是否載入出來,強制讓進城等待。2 隱式等待 driver.implicitly wait 20 3 顯示等待 滿足一些內建的等待條件,這要這些條件滿足,就等待結束。這些條件比如 特定頁面元素載入出來。建立顯示等待的步驟 導包from selenium.webdriver.sup...