selenium05-等待web元素的出现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium05-等待web元素的出现相关的知识,希望对你有一定的参考价值。
参考技术A在第一个自动化脚本中我们打开指定网址后,为了防止页面报错我们使用程序强制让页面sleep1s。但是这样 固定的等待时间会导致我们测试用例执行加长 ,如何更好的解决这个问题将是本篇文章的重点。本篇主要就 等待web元素的出现 的两种用法进行展开,包括 隐式等待和显示等待 。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!
Web自动化测试09:Selenium元素等待
更多功能测试以及全套学习路线图均在专栏,↑↑戳进去领取~
👼 Web自动化测试01:认识web自动化在什么项目中适用
👼Web自动化测试02:Web自动化测试工具选择大全
👼Web自动化测试03:Selenium安装配置,详细教程
👼Web自动化测试04:Selenium-API操作之元素定位
👼Web自动化测试05:Selenium-CSS定位
👼Web自动化测试06:元素操作、浏览器操作方法以及获取元素信息
👼Web自动化测试07:Selenium—鼠标操作
👼Web自动化测试08:Selenium—键盘操作
文章目录
学习目标
我们web自动化的内容,一共分为七个模块。今天开始第二章的学习,Selenium-API操作相关内容。如果你们还想回顾功能测试等等相关内容欢迎关注上方专栏!!!
本文学习目标:
1.掌握元素的隐式等待
2.掌握元素的显式等待
一、元素等待
1.1 什么是元素等待?
概念:在定位页面元素时如果未找到,会在指定时间内一直等待的过程;
1.2 为什么要设置元素等待?
1.网络速度慢
2.电脑配置低
3.服务器处理请求慢
Selenium中元素等待有几种类型呢?
1.3 元素等待类型
1.隐式等待
2.显式等待
二、隐式等待
概念:定位元素时,如果能定位到元素则直接返回该元素,不触发等待; 如果不能定位到该元素,则间隔一段时间后再去定位元素; 如果在达到最大时长时还没有找到指定元素,则抛出元素不存在的异常 NoSuchElementException 。
2.1 实现方式
方 法 :driver.implicitly_wait(timeout) (timeout:为等待最大时长,单位:秒)
说明:隐式等待为全局设置(只需要设置一次,就会作用于所有元素)
2.2 案例
需求:打开注册A页面,完成以下操作
1).使用隐式等待定位用户名输入框,如果元素存在,就输入admin
三、显式等待
概念:定位指定元素时,如果能定位到元素则直接返回该元素,不触发等待; 如果不能定位到该元素,则间隔一段时间后再去定位元素; 如果在达到最大时长时还没有找到指定元素,则抛出超时异常 TimeoutException。
在Selenium中把显式等待的相关方法封装在WebDriverWait类中
3.1 实现方式
1.导包 等待类 --> from selenium.webdriver.support.wait import WebDriverWait
2.WebDriverWait(driver, timeout, poll_frequency=0.5) 1). driver:浏览器驱动对象
2).timeout:超时的时长,单位:秒
3).poll_frequency:检测间隔时间,默认为0.5秒
3.调用方法 until(method):直到…时
1).method:函数名称,该函数用来实现对元素的定位
2).一般使用匿名函数来实现:lambda x: x.find_element_by_id(“userA”)
4. element = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element_by_id(“userA”)
)
3.2 案例
需求:打开注册A页面,完成以下操作
1).使用显式等待定位用户名输入框,如果元素存在,就输入admin
3.3 示例代码
import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Firefox() driver.get("file:///D:/webAutoTest/page/注册A.html")
element = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element_by_id("userA")) element.send_keys("admin")
time.sleep(3) driver.quit()
四、显式与隐式区别
1.作用域:隐式为全局元素,显式等待为单个元素有效
2.使用方法:隐式等待直接通过驱动对象调用,而显式等待方法封装在WebDriverWait类中
3.达到最大超时时长后抛出的异常不同:隐式为NoSuchElementException,显式等待为TimeoutExcepti on
五、元素等待 — 总结
1.为什么要设置元素等待
2.元素等待的过程
3.元素等待的类型
4.显式等待与隐式等待区别
以上是关于selenium05-等待web元素的出现的主要内容,如果未能解决你的问题,请参考以下文章
Web自动化测试:WebDriverWait元素等待和全局设置