selenium中延時等待三種方式


selenium中的延時等待方式有三種:強制等待:sleep()  隱示等待:implicitly_wait()  顯示等待 WebDriverWait()

1.強制等待:sleep(),time模塊下的方法;只能夠針對當前單步操作;缺點:無法很好的控制腳本的執行速度、並且只針對局部一步操作而言、如果每步需要添加則出現過多重復代碼,且休眠時間如果超過5秒會出現瀏覽器回話鏈接斷開;

from time import sleep

sleep(2)    #傳入等待時間

2.隱示等待:implicitly_wait():隱式等待;webdriver驅動器對象下的方法;針對是一次會話所有操作,相當於是一個全局等待;只需要聲明定義一次,通常在設計腳本中會應用於setUp方法;

from selenium import webdriver      #導包

driver = webdriver.Chrome()         #獲取瀏覽器驅動對象

driver.implicitly_wait(20)          #隱示等待,傳入等待時間

3.顯示等待,WebDriverWait(驅動器對象,等待時間)

# 兩種導入WebDriverWait方式
from selenium.webdriver.support.wait import WebDriverWait       # 導包
from selenium.webdriver.support.ui import WebDriverWait         # 導包
使用webdriverwait只能夠與until和not until兩個方法進行使用;until和not until中傳入的參數可以是lambda匿名函數或者預置條件expected_conditions
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# WebDriverWait 需要傳入的是驅動器對象,總體等待時間和刷新時間間隔時間間隔默認0.5
# Presence_of_element_located   表示元素是否存在  必須以元組的形式傳入,所以使用到By方法進行定位
WebDriverWait(driver,30,0.5).until(EC.presence_of_element_located((By.ID,'kw')))
如果unitl或者not unitl傳入的方法定位元素查找到則會返回對應的對象,如果未找到則會拋出TimeoutException異常
EC預置條件模塊具有很多類型的判斷:
presence_of_element_located                  判斷當前元素是否存在
Presence_of_all_elements_located             判斷一組元素是否存在
Text_to_be_present_in_element_value       判斷元素值是否有xx文本信息
Presence_of_all_elements_located             判斷一組元素是否存在
 


免責聲明!

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



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