selenium 三種休眠方式


休眠作用:
(1).下一步的操作會依賴上一步的結果或者內容

三種方式:
1.強制等待: 強制讓瀏覽器等待X秒
import time #導入時間包
time.sleep(3) #等待時間3秒
備:
優點:使用簡單,可以在調試時使用
缺點:不能准確把握需要等待的時間

2.隱式等待:
設置1次,針對所有的webdriver對象(全局等待)
implicitly_wait(X),在X時間內,頁面加載完成,進行下一步操作
備:
優點:隱性等待對整個driver的周期都起作用,所以只要設置一次即可
缺點:使用隱式等待,程序會一直等待整個頁面加載完成,才會執行下一步操作

3.顯示等待
專門用於等待指定的元素
需導入weBdriver包:from selenium.webdriver.support.wait import webDriverwait
優勢:專門用於對指定一個元素進行等待
缺點:必須聲明,只對單次生效,復雜程度相對其他等待而已,更高更復雜

使用方法:WebDriverWait(driver, 超時時間, 調用頻率, 要忽略的異常).until(要執行的方法, 超時時返回的錯誤信息)

locator = (By.LINK_TEXT, 'A')
A就是可以作為判斷操作是否完成的標志
WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))
20:最長等待時間。
0.5:檢查間隔時間,每隔0.5秒檢查一次操作是否完成。
EC.presence_of_element_located(locator):判斷目標元素是否已經成功加載。
忽略異常:如果在調用until或until_not的過程中拋出這個元組中的異常,則不中斷代碼,繼續等待,如果拋出的是這個元組外的異常,則中斷代碼,拋出異常。默認只有NoSuchElementException。
第三種辦法就是顯性等待,WebDriverWait,配合該類的until()和until_not()方法,就能夠根據判斷條件進行靈活地等待了。
它主要的意思就是:程序每隔X秒看一眼,如果條件成立了,則執行下一步,否則繼續等待,直到超過設置的最長時間,然后拋出TimeoutException異常。
缺點:使用相對比較復雜
優點:等待判斷准確,不會浪費多余的等待時間,在用例中使用,可以提高執行效率。
示例:打開登錄頁面,以登錄按鈕為頁面加載成功的標志,如果20秒內,定位到登錄按鈕,就進行登錄操作,不再繼續等待,如果20秒內還沒有定位到登錄按鈕,下一步操作就會報錯,並拋出異常。

顯示等待與隱式等待同時使用時,系統的等待時間取決於最長的時間(誰的等待時間最長瀏覽器就用哪個等待方式)


免責聲明!

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



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