1. 程式人生 > 實用技巧 >自動化:顯示等待和隱式等待的區別和使用常見

自動化:顯示等待和隱式等待的區別和使用常見

Selenium自動化測試中會遇到這樣的問題:一通執行下來提示空指標或者提示元素找不到,此時可以考慮加個等待時間。Selenium常用的等待包括顯示等待、隱式等待、強制等待。

1.顯式等待

element = WebDriverWait(driver,5,0.5).until(EC.presence_of_element_located(By.ID,‘kw’))
element.sendkeys("xxx")

說明:顯示等待是單獨針對某個元素,設定一個等待時間如5秒,每隔0.5秒檢查一次是否出現,如果在5秒之前任何時候出現,則繼續向下,超過5秒尚未出現則拋異常。顯示等待與隱式等待相對,顯示等待必須在每個需要等待的元素前面進行宣告。

使用場景:當開啟一個新頁面,執行第一個元素操作的時候;當某一步操作會引發頁面的載入,並且載入的內容包含了下一步需要操作的元素。一句話,就是當某個元素有載入過程的時候,就需要加上顯示等待。

2.隱式等待

driver.implicitly_wait(10)

說明:隱式等待是全域性的是針對所有元素,設定等待時間如10秒,如果10秒內出現,則繼續向下,否則拋異常。可以理解為在10秒以內,不停重新整理看元素是否加載出來。

使用場景:隱式等待只需要宣告一次,一般在開啟瀏覽器後進行宣告。宣告之後對整個drvier的生命週期都有效,後面不用重複宣告。隱式等待存在一個問題,那就是程式會一直等待整個頁面載入完成,也就是一般情況下你看到瀏覽器標籤欄那個小圈不再轉,才會執行下一步,但有時候頁面想要的元素早就在載入完成了,但是因為個別js之類的東西特別慢,仍得等到頁面全部完成才能執行下一步。

3.強制等待:

time.sleep(3)

用以設定固定的執行緒休眠時間(s),使得整個指令碼暫停。但是這種方式會導致這個指令碼執行時間過長,不到萬不得已儘可能少用,特殊情況下,時間設定最好不超過1秒,一般0.5秒

本文轉載自https://blog.csdn.net/Wuli_SmBug/article/details/82053372?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.edu_weight