selenium等待元素出現


在自動化腳本中我們打開指定網址后,為了防止頁面報錯我們一般強制讓頁面sleep1s。但是這樣固定的等待時間會導致我們測試用例執行加長,本篇主要就等待web元素的出現的兩種用法進行展開,包括隱式等待和顯示等待。

隱式等待(driver.implicitly_wait()

1)概述:全局的設定,后面所有的選擇元素的代碼都不需要單獨的指定周期性的等待

2)格式:driver.implicitly_wait(5)

3)解釋:執行了driver.implicitly_wait(5) 這段代碼之后,后面任何選擇元素操作,最多可以等待5s。若元素未找到會每隔0.5s執行一次直到超出最大等待時間

4)注意:隱式等待只能保證找到元素,但是並不能找到所有元素。此時可以選擇強制sleep讓頁面完全刷新出來

from selenium import webdriver
driver=webdriver.Chrome()
#隱式等待:設置最大等待時間5s,作用於整個webdriver
driver.implicitly_wait(5)

 

顯示等待

1)引入:如果有一個特殊的操作需要等待30s,其余操作5s內均可做出響應。應該如何做呢?

2)概述:為一個操作專門指定等待時間(針對具體的操作)

 

方法1:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
ele = WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.ID,'1')))#60s
不用強記,需要使用的時候直接拷貝,修改后面的元素值即可**((By.ID,'1'))**

 

方法2::先用臨時隱式等待改為60秒,等操作結束之后再改為5秒
from selenium import webdriver
driver=webdriver.Chrome()
driver.implicitly_wait(5)
driver.get('http://www.baidu.com')
ele=driver.find_element_by_id('kw')
ele.send_keys('python百度百科')
button=driver.find_element_by_id('su')
button.click()
#**********耗時操作開始#**********
driver.implicitly_wait(60)
res=driver.find_element_by_id('1')
connent = res.text
if res.text.startswith('Python是一種計算機程序設計語言') :
    print('測試通過')
else:
    print('測試失敗')
print(connent)
#**********耗時操作結束#**********
driver.implicitly_wait(5)

 

參考鏈接:https://www.jianshu.com/p/1ec2f6052397


免責聲明!

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



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