1. 程式人生 > 其它 >Selenium之等待機制

Selenium之等待機制

Selenium之等待機制

用於網路延遲嚴重場景,避免程式碼執行較快,但是遇到標籤還沒有載入完成就對該標籤進行操作,就會出現報錯在selenium中,有三種等待機制可用:

1.顯式等待,當有需要等待的標籤時,才去使用等待

2.隱式等待,在瀏覽器物件建立之初,就為這個物件新增一個被動,即隱式等待,當遇到查詢標籤的時候,就自動觸發被動也就是隱式等待

3.強制等待,time.sleep(1),休眠

from time import sleep
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get('http://www.baidu.com') driver.find_element_by_id('kw').send_keys(r'斷浪狂刀憶年少-cnblogs') driver.find_element_by_id('su').click() # 顯示等待 wait = WebDriverWait(driver=driver, timeout=10
, poll_frequency=0.5) # timeout超時時間,poll_frequency輪詢,每%s秒去檢查一下標籤有沒有載入成功 wait.until(EC.visibility_of_element_located( (By.LINK_TEXT, '斷浪狂刀憶年少 - 部落格園'))).click() # 直到找到載入成功找到這個元素後,在進行事件操作(By.LINK_TEXT,'斷浪狂刀憶年少 - 部落格園')這裡要用元組 sleep(1) driver.quit() # 隱式等待 driver.get('http://www.baidu.com') driver.find_element_by_id(
'kw').send_keys(r'斷浪狂刀憶年少-cnblogs') driver.find_element_by_id('su').click() driver.implicitly_wait(30) # 隱式等待 driver.find_element_by_link_text('斷浪狂刀憶年少 - 部落格園').click() sleep(1) driver.quit()