隨著對selenium不斷的深入學(xué)習(xí),在網(wǎng)上搜索的資料越多,才發(fā)現(xiàn)自己掌握的只是冰山一角。
1、強制等待
用法:time.sleep(time_to_wait)
? ? ? ? ?? time_to_wait:表示超時時間(秒)
它是全局等待,意思是在指定時間內(nèi)頁面全部加載完成,超過設(shè)定時間后就可以執(zhí)行下一步;反之,在指定時間內(nèi)沒有加載全部元素,會拋出異常。
剛學(xué)自動化的時候,不知道有這么多等待方式,最喜歡的就是用它去調(diào)試腳本,碰上加載不出元素就慢慢的增加時間,到最后整個腳本執(zhí)行完都花了不少時間。現(xiàn)在回想下,可能是強制等待最大的弊端吧,不太靈活!
2、隱式等待
用法:driver.implicity_wait(time_to_wait)
? ? ? ? ? time_to_wait:表示超時時間(秒)
它和強制等待一樣,也是全局等待的意思。在規(guī)定時間內(nèi)找到加裝出頁面所有元素后執(zhí)行下一步;反之,在超過時間還沒加載完成,則拋出異常;它的優(yōu)點是稍微比強制等待靈活一點,加載完元素后就可以執(zhí)行,節(jié)約了部分時間。
3、顯示等待
用法:WebDriverWait(self,driver,timeout,poll_frequency=POLL_FREQUENCY,ignored_exceptions=None).until(要執(zhí)行的方法, 超時時返回的錯誤信息)
self, 函數(shù)本身,在實際使用的時候不需要輸入
dirver:實例化的WebDriver驅(qū)動
timeout:超時時間(秒)
poll_frequency=POLL_FREQUENCY:檢查某個元素的時間間隔
ignored_exceptions,超時后的異常信息,默認(rèn)情況下拋 “NoSuchElementException",可忽略
它針對的是某個特定元素,而不是全局等待。在給定時間和條件下,判斷在等待時間內(nèi)條件是否滿足,如果滿足則返回,如果不滿足會繼續(xù)等待,超過時間就會拋出異常。
參考: