6、Selenium常用操作之时间等待
时间等待操作
- 为什么要增加时间等待?
- 模拟用户真实的思考时间
- 避免页面元素还未加载完成就进行元素定位,导致定位失败
- 时间等待分为三种,包括:强制等待、显式等待、隐式等待
- 强制等待:使用python中time模块的sleep()方法
- 导入time模块,调用sleep()方法进行强制等待
-
# 方式一 from time import sleep # 强制等待3秒 sleep(3) # 方式二 import time # 强制等待4秒 time.sleep(4)
- 显式等待:selenium为我们提供的WebDriverWait类
- 使用场景:等待页面加载完成,找到某个条件发生后在继续执行后续代码,如果超出设置的超时时间仍然为找到这个条件就会抛出异常
- 使用方式
- 导包:from selenium.webdriver.support.ui import WebDriverWait
- 格式:WebDriverWait(driver, timeout, poll_frequency=0.5, ignored_exceptions=None)
- driver:浏览器驱动
- timeout:超时时间
- poll_frequency:检测条件频率
- ignored_exceptions:超时异常,默认异常是NoSuchElementException,TimeOutException
-
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait driver = webdriver.Chrome() driver.get('https://www.baidu.com') # 打开百度网页后设置显示等待,超时时间时10秒,每秒钟定位一次元素,直到定位到id值时kw的元素就结束等待 bd_input = WebDriverWait(driver,10,1).until(lambda x:x.find_element_by_id('kw').is_display())
- 强制等待:使用python中time模块的sleep()方法
-
- 隐式等待:selenium提供的implicitly_wait()方法,使用不需要导包
- 使用场景:设置一个等待时间范围,这个等待时间时不固定的,但是最长等待时间就是设置的最大值,隐式等待也称为智能等待,它等待一个元素被发现或者一个命令完成(等待页面整体加载完成),超时也会抛出异常
- 使用方式:一般在打开页面的时候声明一次隐式等待即可
- 格式:
-
from selenium import webdriver driver = webdriver.Chrome() driver.get('https://www.baidu.com') # 设置隐式等待,超市时间30 driver.implicitly_wait(30)
- 隐式等待:selenium提供的implicitly_wait()方法,使用不需要导包
浙公网安备 33010602011771号