在實踐(一)中逞力,登錄過程中網(wǎng)頁加載慢弯淘,出現(xiàn)了還沒等圖片完全加載出來就進行圖片識別的現(xiàn)象,導致識別失敗璃搜,如下圖
那么我們應該如何操作去避免提前加載的現(xiàn)象呢?
如果給它加一個條件滿足(圖片驗證碼顯示完全)時:再進行圖片識別操作是否可行呢鳞上,我們來看看
Selenium有3種等待時間:
結合以上三種等待方法與圖片完全加載出來再去圖片識別相比較这吻,發(fā)現(xiàn)WebDriverWait()比較適用,那么WebDriverWait()如何使用呢因块?
1. 使用WebDriverWait()方法:
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
driver :瀏覽器驅動名稱
timeout :最長超時時間橘原,默認以秒為單位。
poll_frequency :檢測的間隔(步長)時間涡上,默認為0.5S趾断。
ignored_exceptions :超時后的異常信息,默認情況下拋NoSuchElementException異常
WebDriverWait()一般由until()或until_not()方法配合使用
HTML結構:
browser=webdriver.Firefox()browser.get("https://login.acesse.com/en?dest_url=https://acesse.com/en/contact")#打開測試網(wǎng)站 Element=WebDriverWait(browser,100).until(? ? EC.presence_of_element_located((By.ID,"captcha_img_id")))
browser.find_element_by_name("Login").send_keys("xxxx")
browser.find_element_by_name("Password").send_keys("xxxxx")
代碼意思是:ID名稱為"captcha_img_id"的元素顯示等待100s吩愧,如果沒有出現(xiàn)芋酌,拋出異常,通過上面方法就可以處理等待頁面元素加載完全后進行相關功能操作雁佳。