元素等待
目标
1.能够使用隐式等待来定位元素
2.能够使用显式等待来定位元素
应用场景
可能由于一些原因,我们想找的元素并没有立刻出来,此时如果直接定位可能会报错,比如以下原因:
1.由于网络速度原因
2.服务器处理请求原因
3.电脑配置原因
概念
WebDriver定位页面元素是如果没有找到,会在指定时间内一直等待的过程
元素等待一共分为两种类型
1.显式等待
2.隐式等待
隐式等待
应用场景
针对所有定位元素的超时时间设置为同一个值的时候
概念
等待元素加载指定的时长,超出时长抛出NoSuchElementException异常
步骤
1.在获取driver对象后,使用driver调用implicitly_wait方法即可示例
示例
在5秒钟内,在《设置》程序中的”返回“按钮,如果找到则点击。如果找不到则观察对应错误信息。
代码
from selenium.webdriver.support.wait import WebDriverWait
#-----
#启动应用参数
#-----
driver.implicitly_wait(5)
search_button=driver.find_element_by_xpath("//*[contains(@content-desc,'收起')]")
search_button.click()
方法参数解释
#参数:
#timeout:超时的时长,单位:秒
implicitly_wait(timeout)
显式等待
应用场景
针对所有定位元素的超时时间设置为不同的值的时候
概念
等待元素加载指定的时长,超出时长抛出TimeoutException异常
步骤
1.导包
2.创建WebDriverWait对象
3.调用WebDriverWait对象的until方法
示例
在5秒钟内,每1秒在《设置》程序中的”返回“按钮,如果找到则点击。如果找不到则观察对应错误信息。
代码
from selenium.webdriver.support.wait import WebDriverWait
#-----
#启动应用参数
#-----
#创建WebDriverWait对象
wait=WebDriverWait(driver,5,poll_frequency=1)
#获取元素并设置超时时间和频率
search_button=wait.until(lambdax:x.find_element_by_xpath("//*[contains(@content-desc,'收起')]"))
#点击搜索按钮
search_button.click()
方法参数解释
#参数:
#timeout:超时的时长,单位:秒
implicitly_wait(timeout)