Selenium python中的等待方式

在使用selenium python进行web自动化测试时,时常需要等待页面元素的出现,特别是页面加载的过程,需要用到等待
以下是三种selenium python的等待方式:
参考: https://blog.csdn.net/weixin_41927274/article/details/85090843
1.sleep()
sleep(),强制等待,设置休眠时间,通过导入time包来使用

from time import sleep
sleep(5)		# 强制等待5秒钟

缺点:sleep只能选择一个固定的时间进行等待
2.implicitly_wait()
implicitly_wait(),隐性等待,是 webdirver 提供的一个超时等待,智能等待一个元素被发现,或一个命令完成。如果超出了设置时间的则抛出异常。通过导入selenium包就可使用。

from selenium import webdriver
wd=webdriver.Chrome(r'D:\webdrivers\chromedriver.exe')
wd.implicitly_wait(10)      # 设置最长等待时间,每隔半秒寻找一次,最长等待时间为10秒

3.WebDriverWait()
WebDriverWait(),显性等待,是 webdirver 提供的方法,在设置时间内,默认每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException
其语法格式如下:

WebDriverWait语法格式:
    driver:webdriver的驱动程序
    timeout:超时时间,默认以秒为单位
    poll_frequency:休眠时间(步长)的间隔,默认为0.5秒,即检测元素是否存在的频率
WebDriverWait一般由until或until_not配合使用:
    until(method,message=")调用该方法提供的驱动程序做为一个参数,直到返回值不为False
    until_not(method,message=")调用该方法提供的驱动程序做为一个参数,直到返回值为False

eg.

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from time import sleep

wd=webdriver.Chrome(r'D:\webdrivers\chromedriver.exe')

# 谷歌驱动,超时时间为10,每个0.5秒监测一次
wait=WebDriverWait(driver=wd,timeout=10,poll_frequency=0.5)	
# 也可直接写为wait=WebDriverWait(wd,10,0.5)	

# 可与until配合使用
wait.until(lambda wd:wd.find_element_by_css_selector("h5中元素的定位"))
sleep(1)		# 个人认为最好休眠一秒,方便下面进行断言

# 断言(我判断的是在新增弹窗中新增XX后点击确定,弹窗消失,页面加载完成后会跳出“新增成功”的提示)
self.assertEqual(u'新增成功!',wd.find_element_by_css_selector("h5中元素的定位").text)

PS:lambda表达式
lambda 表达式可以用来声明匿名函数。lambda 函数是一种简单的、在同一行中定义函数的方法。lambda 函数实际生成了一个函数对象lambda 表达式只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数的返回值。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值