UI自動化常用的幾種等待方法


  因為各種原因(業務邏輯原因,網絡原因,服務器響應原因等),需要在代碼加入等待的操作!目前python 中UI自動化的等待最常用的有幾種,供大家分析參考:

一,萬能的time類

導入time類[import time]使用time.sleep() 或者從time 中導入sleep ,[from time import sleep],使用sleep() ,可以在代碼的每一個步驟后寫入,這個等待方法靈活自由,但是也有一個弊端就是后面寫的時間是必須執行完才可以執行后面的代碼,比較消耗時間!還有就是不確定因素導致的等待時間不夠的話會代碼報錯!例如代碼寫的是sleep(5),等待/休眠5秒,但是網絡延遲可能要10秒才刷新出要查詢的元素或者頁面,那樣就會因為找不到相關的元素代碼報錯導致程序中斷! 還有就是加入sleep(5)秒,但是程序1秒后就刷新了,剩下的4秒就浪費了!

二,driver.implicitly_wait() 隱性等待 /智能等待 

該方法只適用於webdriver 服務,在UI自動化中使用,在接口自動化或者其他python代碼中不能使用! 使用方法,driver.implicitly_wait(10)  執行該代碼后以下所有的代碼都適用!它的執行思路就是每一個元素定位后下一個元素之前如果定位不到會有等待,每(0.5秒)請求一下元素,(估計是每0.5秒刷新一次,這個都不重要!)一直到設定的10秒后如果還沒有請求到元素才報錯!上限就是自己輸入的值!這樣大大縮短了等待的時間,而且不像sleep()方法一樣寫很多次代碼!這個在一個對話中只寫一次就可以!大大減少了代碼量!

三,WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None) 顯性等待

先導入包 :from selenium.webdriver.support.wait import WebDriverWait

有些元素需要等一段時間才能顯示出來然后進行操作,(常用在一些業務邏輯控制中,如置灰按鈕在滿足一定條件后才可以點擊等,這個條件可能需要一些延時來實現)同樣,該等待方法也是只能在webdriver中使用。具體使用方法示例:

之前的打開瀏覽器,打開網頁就忽略 ,首先是先把隱藏的元素自定義一下:ls = '//*[text()="xxx"]/../a' (多級元素定位,..代表父級) 

                 其次,實例化一個等待對象  ll = WebDriverWait(driver,30,3).until(lambda driver :driver.find_element_by_xpath(ls))                                                                                           --->30是上限,3是每隔3秒刷新下請求,后面還可以跟個參數,是超出后報什么異常

                 --->lambda是一個匿名函數

                 最后,元素出現,操作元素 ll.click()

以上就是整理的三種等待方法,看了下別人的博客只是列出了沒有詳細說明,相信各個小白看到我的博客能夠給你們幫助!謝謝各位支持!歡迎評論!

                  


免責聲明!

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



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