python之selenium三種等待方法


前提:

我們在做Web自動化時,有的時候要等待元素加載出來,才能操作,不然會報錯

1.強制等待

2.隱式等待

3.顯示等待

內容:

一,強制等待

這個比較簡單,就是利用time模塊的sleep的方法來實現

例子:

 1 # coding = utf-8
 2 from time import sleep
 3 from selenium import webdriver
 4 # 啟動瀏覽器
 5 driver = webdriver.Chrome()
 6 # 打開百度首頁
 7 driver.get(r'https://www.baidu.com/')
 8 # 等待3秒
 9 sleep(3)
10 driver.find_element_by_css_selector("#kw").send_keys("selenium")
11 # 退出
12 driver.quit()

 

這個就是強制等待3秒,不管你怎么樣,就是給我停3秒,強制性的

二,隱式等待

隱式等待就是瀏覽器會在內部執行等待,但是我們可能看不出來他等待了

例子:

# coding = utf-8
from selenium import webdriver
# 啟動瀏覽器
driver = webdriver.Chrome()
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
driver.find_element_by_css_selector("#kw").send_keys("selenium")
driver.find_element_by_css_selector("#su").click()
# 隱式等待30秒
driver.implicitly_wait(30)
result = driver.find_elements_by_css_selector("h3.t>a")
for i in result:
    print(i.text)
# 退出
driver.quit()

 

三,顯示等待

因為隱式等待有缺陷,比如你想要元素加載出來就執行下面的事情,怎么辦,這個要用顯示等待了

顯示等待要用到WebDriverWait,配合該類的until()和until_not()方法,就能夠根據判斷條件而進行靈活地等待了。它主要的意思就是:程序每隔xx檢查一次,如果條件成立了,則執行下一步,否則繼續等待,直到超過設置的最長時間,然后拋出TimeoutException

例子:

# coding = utf-8
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
# 啟動瀏覽器
driver = webdriver.Chrome()
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
driver.find_element_by_css_selector("#kw").send_keys("selenium")
driver.find_element_by_css_selector("#su").click()
# 超時時間為30秒,每0.2秒檢查1次,直到class="tt"的元素出現
text = WebDriverWait(driver,30,0.2).until(lambda x:x.find_element_by_css_selector(".tt")).text
print(text)
# 退出
driver.quit()

 


免責聲明!

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



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