標題目錄
前言
一、強制等待
二、隱式等待
三、顯示等待
最后
前言
有時做WEB自動化,感覺代碼沒問題,但就是定位不到元素,這是為什么呢?
這是因為有時候網路或者是其它因素,導致我們需要定位的元素沒加載出來,代碼就執行到下一步操作了,這時我們只需加個等待時間就好了,而常用的等待方式有三種:
一、強制等待
不管元素加載出來沒,必須等 x 秒鐘,時間到了再去執后面的代碼,
import time
from selenium import webdriver
# 啟動瀏覽器
driver = webdriver.Chrome()
# 打開百度首頁
driver.get('https://www.baidu.com/')
# 強制等待3秒
time.sleep(3)
driver.find_element_by_css_selector("#kw").send_keys("python")
# 退出
driver.quit()
二、隱式等待
A和B約定好,不管A去了哪,都會等待B x 秒,如果B在A等待的這段時間里出現了,則A和B一塊出發,如果B在A的等待時間內沒有出現,
from selenium import webdriver
# 啟動瀏覽器
driver = webdriver.Chrome()
# 打開百度首頁
driver.get(r'https://www.baidu.com/')
driver.find_element_by_css_selector("#kw").send_keys("python")
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() 方法,能根據判斷條件進行靈活地等待,
其主要有4個引數:
1、driver:瀏覽器驅動;
2、timeout:等待時間;
3、poll_frequency:檢測的間隔時間,默認0.5s;
4、ignored_exceptions:超時后的例外資訊,默認拋出NoSuchElementException,
from seleniumimport webdriver
from selenium.webdriver.support.wait importWebDriverWait
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次,直到的元素出現
text =WebDriverWait(driver, 30, 0.2).until(lambda x:x.find_element_by_css_selector(".tt")).text
print(text)
# 退出
driver.quit()
最后
對軟體測驗、介面測驗、自動化測驗、軟體測驗零基礎入門、性能測驗、LR腳本開發、python自動化全堆疊、面試經驗感興趣可以175317069,群內會有不定期的發放免費的資料鏈接,如果你有好的學習也資料可以私聊發我,我會注明出處之后分享給大家,
喜歡的話,歡迎【點贊】、【關注】、【喜歡】禮貌三連喔!
import time from selenium import webdriver # 啟動瀏覽器 driver = webdriver.Chrome()# 打開百度首頁 driver.get('https://www.baidu.com/')# 強制等待3秒 time.sleep(3) driver.find_element_by_css_selector("#kw").send_keys("python")# 退出 driver.quit()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/459.html
標籤:其他
上一篇:Jmeter 定時器
