顯示等待語法
WebDriverWait(driver,timeout,poll_frequency,ignored_exceptions)
driver: 傳入WebDriver實例,即webdriver.Chrome() timeout: 超時時間,等待的最長時間(同時要考慮隱性等待時間) poll_frequency: 調用until或until_not中的方法的間隔時間,默認是0.5秒 ignored_exceptions: 忽略的異常,如果在調用until或until_not的過程中拋出這個元組中的異常, 則不中斷代碼,繼續等待,如果拋出的是這個元組外的異常,則中斷代碼,拋出異常。默認只有NoSuchElementException
WebDriverWait 的兩種等待方式
until(method,message) method: 在等待期間,每隔一段時間(__init__中的poll_frequency)調用這個傳入的方法,直到返回值不是False message: 如果超時,拋出TimeoutException,將message傳入異常
until_not(method,message) 與until相反,until_not是當某元素出現或什么條件成立則繼續執行, until_not是當某元素消失或什么條件不成立則繼續執行,參數也相同,不再贅述。
調用方法:WebDriverWait(driver, 超時時長, 調用頻率, 忽略異常).until(可執行方法, 超時時返回的信息)
下面是根據until和until_not在百度輸入框進行操作的demo
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait browser = webdriver.Chrome() browser.get("https://www.baidu.com") # 一行代碼完成 WebDriverWait(browser,10).until(lambda browser:browser.find_element_by_id("kw")).send_keys("pytest") # 定義方法完成 def kw(driver,times,func): return WebDriverWait(driver,times).until(func) kw(browser,10,lambda x:x.find_element_by_id("kw")).send_keys("selenium")