自動化:顯示等待和隱式等待的區別和使用常見
阿新 • • 發佈:2020-08-06
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秒