selenium 等待時間3種方式


強制等待 sleep() -- 最不建議用

缺點:sleep(10)
網絡不好的情況,到10秒就拋出異常
網絡很好,1秒鍾就響應了,白白等待多9秒

 

隱式等待 -- 也不是很理想的方法
implicitly_wait(秒)
設置最長等待時間,在這個時間內加載完成,則執行下一步
整個driver的會話周期內,設置一次即可,全局都可用


顯性等待 -- selenium提供的
明確等到某個條件滿足了,才進行下一步操作


2個類
WebDriverWait 顯性等待類
WebDriverWait(driver, 等待時長,輪詢周期).until/until_not

希望條件類
expected_conditions類,提供一系列期望發生的條件

判斷什么時候滿足條件
presence_of_element_located:元素存在
visibility_of_element_located:元素可見
element_to_be_clickable:元素可點擊

 

實例

# -*- coding:utf-8 -*-

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

# 打開瀏覽器
options = webdriver.ChromeOptions()
options.add_argument('disable-infobars') # 多加幾行是為了去掉提示:Chrome正收到自動測試軟件的控制
driver = webdriver.Chrome(chrome_options=options)
driver.get('http://www.baidu.com')
driver.maximize_window()  # 最大化瀏覽器窗口
login_a_locator = '#u1 > a.lb'
# 等待響應
print(u'等待響應...')
WebDriverWait(driver,50,1).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, login_a_locator)))
print(u'元素加載完成並點擊該元素...')
driver.find_element_by_css_selector(login_a_locator).click()
# driver.close()
print(u'結束')

 

 


免責聲明!

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



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