Python selenium 延時的幾種方法


解決網頁加載緩慢的幾種方法:

一、顯性等待WebDriverWait,配合該類的until()和until_not()方法,就能夠根據判斷條件而進行靈活地等待

1 from selenium import webdriver
2 from selenium.webdriver.support.wait import WebDriverWait
3 
4 driver = webdriver.Firefox()
5 driver.get("https://www.baidu.com/")
6 # 等待時長30秒,默認每0.5秒詢問一次
7 WebDriverWait(driver, 30).until(lambda x: x.find_element_by_id("kw")).send_keys("sky")
8 # sel_count_info = WebDriverWait(driver, 30).until(lambda x: x.find_element_by_id("selCount")).text
Wait Until

WebDriverWait(driver, 超時時長, 調用頻率, 忽略異常).until(可執行方法, 超時時返回的信息)

WebDriverWait(driver, 超時時長, 調用頻率, 忽略異常).until_not(可執行方法, 超時時返回的信息)

可以用selenium提供的 expected_conditions 模塊中的各種條件,也可以用WebElement的 is_displayed() 、is_enabled()、is_selected() 方法,或者用自己封裝的方法都可以

二、強制等待 sleep(xx),不建議總用這種等待方式,太死板,嚴重影響程序執行速度

1 from selenium import webdriver
2 from selenium.webdriver.support.wait import WebDriverWait
3 
4 driver = webdriver.Firefox()
5 driver.get("https://www.baidu.com/")
6 # 強制等待時長5秒
7 driver.find_element_by_id("kw").send_keys("sky")
Sleep

三、隱性等待implicitly_wait(xx),隱性等待對整個driver的周期都起作用,所以只要設置一次即可

1 from selenium import webdriver  
2 
3 driver = webdriver.Firefox() 
4 # 隱性等待,最長等30秒 
5 driver.implicitly_wait(30)  
6 driver.get('https://huilansame.github.io') 
implicitly_wait

四、隱性顯性並用

 1 from selenium import webdriver  
 2 from selenium.webdriver.support.wait import WebDriverWait  
 3 from selenium.webdriver.support import expected_conditions as EC  
 4 from selenium.webdriver.common.by import By  
 5 driver = webdriver.Firefox()  
 6 driver.implicitly_wait(10) # 隱性等待和顯性等待可以同時用,但要注意:等待的最長時間取兩者之中的大者  
 7 driver.get('https://huilansame.github.io')  
 8 locator = (By.LINK_TEXT, 'CSDN')  
 9 try:  
10     WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(locator))  
11     print(driver.find_element_by_link_text('CSDN').get_attribute('href'))  
12 finally:  
13     driver.close()  
隱性顯性同時使用

 


免責聲明!

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



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