selenium三种等待时间之显示等待

本文详细解读了WebDriverWait显示等待的概念,包括其工作原理、优缺点,并通过实例展示了如何在Python Selenium中使用它来精确控制元素加载。通过精确等待,避免了不必要的延迟,提高测试执行速度。
摘要由CSDN通过智能技术生成

显示等待

显示等待,对指定元素进行等待的一种等待方式。通过设置最大等待时间、检查频率,对页面的元素来进行等待,一旦找到元素,则停止等待,进入后续步骤。
它主要的意思就是:程序每隔x秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException异常。
缺点:
1、使用相对比较复杂;
2、和强制等待类似,每一行等待只执行一次,如果要进行多个元素的等待,则需要多次写入。
优点:
等待判断准确,不会浪费多余的等待时间,在用例中使用,可以提高执行效率。

WebDriverWait类

显示等待使用思路:
1、导包:from selenium.webdriver.support.wait import WebDriverWait
2、对WebDriverWait类进行实例对象操作
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
driver:浏览器驱动
timeout:最大等待时间
poll_frequency:检测的间隔时间,默认0.5
ignored_exceptions:超时后的异常信息,默认抛出NoSuchElementException

3、调用until()和until_not方法来等待元素
def until(self,method,message=’’)
含义:直到条件成立返回为真,等待结束。如果超时,抛出TimeoutException,将message传入异常。
参数:
1、method:在等待期间,每隔一段时间调用这个传入的方法,直到返回值不是False,一般使用lambda匿名函数;
2、message:提示信息,出现异常时会将这个信息输出在控制台
def until_not(self,method,message=’’)
含义:与until相反,until是当某元素出现或什么条件成立则继续执行,until_not是当某元素消失或什么条件不成立则继续执行,参数也相同。

示例:打开百度,输入北京,点击搜索,点击第一个查询结果。使用显示等待

# -*- coding:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
import time

# 打开chrome浏览器
driver = webdriver.Chrome()
driver.implicitly_wait(10)
# 打开百度首页
driver.get('https://www.baidu.com/')
# 输入北京
driver.find_element_by_id('kw').send_keys('北京')
# 点击百度一下
driver.find_element_by_id('su').click()
# 点击第一个查询结果
# 定位到第一个查询结果的元素
ele = driver.find_element_by_xpath('//*[@id="1"]/div/div/h3/a')
# 实例WebDriverWait对象
wait = WebDriverWait(driver, 20)
# 调用until()方法, 判断某个元素是否存在页面上,结果为True,则结束等待,反之继续等待
wait.until(lambda x:ele.is_displayed())
# 对找到的元素执行点击操作
ele.click()
time.sleep(2)
# 关闭浏览器
driver.quit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值