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


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


免責聲明!

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



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