集团1929cc威尼斯官网
  • 国家级全民数字素养与技能培训基地
  • 河南省第一批产教融合型企业建设培育单位
  • 郑州市数字技能人才(码农)培养评价联盟

自动化测试小技巧之selenium的等待实现方式

编辑:云和数据 日期:2023-10-10 09:56

9a44c0a054a8c4f8168b7c1167045ef.png

页面还没加载出来就对页面上的元素进行操作,就会出现:因为加载元素延时造成的脚本失败,我们可以通过设置等待时间来提升自动化脚本的稳定性。

webdriver 提供了3种类型的等待:显式等待、隐式等待、休眠

² 显式等待是针对某一个元素进行相关等待判定;

² 隐式等待不针对某一个元素进行等待,全局元素等待;

² sleep 休眠方法。

1.方式1:显式等待

webdriverwait 类由 webdriver 提供的等待方法。在设置时间内,默认每个一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常

² webdriverwait(driver,timeout,poll_frequency=0.5,ignored_exceptions=none)

² n driver 浏览器驱动

² n timeout最长超时时间,默认以秒为单位

² n poll_frequency 检测的间隔时间,默认为 0.5

² n ignored_exceptions

² nosuchelementexception 异常

² webdriverwait 一般由 until() until_not()方法配合使用

² n until(method,message=’’) 调用该方法提供的驱动程序作为一个参数,知道返回值为 ture

² n until_not(method,message=’’ 调用该方法提供的驱动程序作为一个参数,知道返回值为 false

2.代码实现

from selenium import webdriver
from selenium.webdriver.common.by import by
from selenium.webdriver.support.ui import webdriverwait
# as expected_conditions重命名为ec
from selenium.webdriver.support import expected_conditions as ec
from time import sleep

# 指定浏览器位置
chrome_location =
r'd:\software\win_x64_1135105_chrome-win\chrome-win\chrome.exe'
options = webdriver.chromeoptions()
options.binary_location = chrome_location

driver = webdriver.chrome(options=options)
driver.get(r'https://www.baidu.com/')

driver.find_element(by.css_selector, '#kw').send_keys('selenium')
sleep(
3)
# 显式等待 30 判断搜索按钮是否存在
element = webdriverwait(driver, 30, 0.5).until(ec.presence_of_element_located((by.id, 'su'))
element.click()
sleep(
3)
driver.quit()

3.方式2:隐式等待

implicitly_wait() 默认参数的单位为秒。隐性等待设置了一个时间,在一段时间内网页是否加载完成,如果完成了,就进行下一步;在设置的时间内没有加载完成,则会报超时加载。

4.代码实现

# coding=utf-8
from selenium import webdriver
from selenium.webdriver.common.by import by
from selenium.common.exceptions import nosuchelementexception
from time import sleep, ctime
# 指定浏览器位置
chrome_location =
r'd:\software\win_x64_1135105_chrome-win\chrome-win\chrome.exe'
options = webdriver.chromeoptions()
options.binary_location = chrome_location
driver = webdriver.chrome(
options=options)
# 隐式等待 30
driver.implicitly_wait(30)
driver.get(
r'https://www.baidu.com')
# 检测搜索框是否存在
try:
   driver.find_element(by.css_selector,
'#kw').send_keys('selenium')
   driver.find_element(by.css_selector,
'#su').click
except nosuchelementexception as msg:
   
print(msg)
sleep(
3)
driver.quit()

5.方式3:sleep 休眠

sleep()方法有 python time 模块提供。在脚本调试过程中,希望脚本再执行到某一位置时做固定时间的休眠,则可以使用。

sleep()默认参数以秒为单位,如果设置时长小于 1 秒,则用小数表示。

 

相关内容

string类型的常见命令有哪些? string类型,也就是字符串类型,是redis中最简单的存储类型。其value是字符串,不过根据字符串的格式不同,又可以分为3类:string是普通字符串,int整数类型,可以做自增、自减操作,float浮点类型,可以做自增、自减操作。string的常见命令有:set:添加或者修改已经存在的... 通过form表单提交数据存在哪些缺点? html中的
标签,就是用于采集用户输入的信息,并通过标签的提交操作,把采集到的信息提交到服务器端进行处理。通过点击 submit 按钮,触发表单提交的操作,从而使页面跳转到 action url 的行为,叫做表单的同步提交。表单同步提交存在两个缺... 现在的就业环境回暖了吗 最近上网时,发现很多友友都在问一个艾瑞巴蒂都关心的问题:“当前就业环境回暖了吗?”有的人根据自己的经历,觉得最近猎头和hr的电话明显增多;也有人通过观察网络上的信息,发现求职者们分享的选择工作机会的帖子逐渐增多;还有人表示自己已经预约了面试并且成功拿到了 offer……... 新手起步理解group by 在 mysql 中,group by用于将具有指定列中相同值的行分组在一起,允许对数据进行分类和聚合,即按照指定的字段或者表达式进行分组。我们现在有一个简单的表student,内容如下表1所示:对于上面这个表,我们要求查询每个班几个人?答案是:select class,count(c... windows资源性能常用计数器及参考值 processor%process timecpu的使用率:该计数器最为常用,可以查看处理器是否处于饱和状态,如果该值持续超过95%,就表示当前系统的瓶颈为cpu,可以考虑增加一个处理器或更换一个性能更好的处理器。(参考值:<80%)processor queue length... 今年的就业情况,还能学前端吗? 今年,经济形势低迷,让就业市场遭遇了前所未有的挑战,这也让许多人对于是否投身互联网行业产生了疑虑。无论是赚钱、企业经营、找工作、升职加薪,还是生活本身,都变得越来越困难,一系列的问题仍层出不穷,公司倒闭,大批人面临失业风险,普通人消费力不足,年轻人看不到未来…众所周知,互联网行业具...
×
网站地图