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()  
隐性显性同时使用

 

转载于:https://www.cnblogs.com/skyliao/p/9072782.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值