IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Selenium之显式等待、隐式等待 -> 正文阅读

[开发测试]Selenium之显式等待、隐式等待

隐式等待

定位元素时,如果能定位到元素则直接返回该元素,不触发等待; 如果不能定位到该元素,则间隔一段时间后再去定位元素;如果在达到最大时长时还没有找到指定元素,则抛出元素不存在的异常 NoSuchElementException;

方法:driver.implicitly_wait(timeout)
???????????(timeout: 为等待最大时长, 单位: 秒)
说明:隐式等待为全局设置(只需要设置一次, 就会作用于所有元素)

# 需求: 打开注册A页面, 完成以下操作
# 1).使用隐式等待定位用户名输入框, 如果元素存在, 就输入admin
from  selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
# 设置隐式等待10s
driver.implicitly_wait(10)
driver.get("D:\python\web自动化\显式、隐式等待\注册A.html")
sleep(2)
# 给一个错误的id,不能找到元素,如果直接抛出异常说明等待失效,如果在设置的指定时长抛出异常,说明等待生效
driver.find_element_by_css_selector("user").send_keys("admin")
sleep(2)
driver.quit()

显示等待

定位指定元素时,如果能定位到元素则直接返回该元素,不触发等待;如果不能定位到该元素,则间隔一段时间后再去定位元素;如果在达到最大时长时还没有找到指定元素,则抛出超时异常TimeoutException

:在Selenium中把显式等待的相关方法封装在WebDriverWait类中

实现方式

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"))

匿名函数参考:https://blog.csdn.net/weixin_43790276/article/details/90730797?

# 需求: 打开注册A页面, 完成以下操作
# 1).使用显式等待定位用户名输入框, 如果元素存在, 就输入admin
from time import sleep
from selenium import webdriver
# 导包
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Chrome()
driver.get("D:\python\web自动化\显式、隐式等待\注册A.html")
# 实例化WebDriverWait()并调用until方法
element = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element_by_id("userA"))
element.send_keys("admin")
sleep(3)
driver.quit()

显式等待与隐式等待的区别

1. 作用域: 隐式为全局元素, 显式等待为单个元素有效
2. 使用方法: 隐式等待直接通过驱动对象调用, 而显式等待方法封装在WebDriverWait类中
3. 达到最大超时时长后抛出的异常不同:隐式为NoSuchElementException, 显式等待为TimeoutException

注:隐式等待和显示等待都存在时,超时时间取二者中较大的

拓展:

隐式等待
隐式等待是设置的全局等待
1、页面加载超时等待;
2、页面元素加载超时;
3、异步脚本超时。
如果是页面元素超时,设置等待时间,是对页面中的所有元素设置加载时间。

 页面加载超时时间设置为5s
driver.manage().timeouts().pageLoadTimeout(5,TimeUnit.SECONDS);
driver.get("https://www.baidu.com/");  
定位对象时给10s的时间, 如果10s内还定位不到则抛出异常
driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
driver.findElement(By.id("kw")).sendKeys("隐式等待"); 
异步脚本的超时时间设置成3s
driver.manage().timeouts().setScriptTimeout(3,TimeUnit.SECONDS);
  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-07 11:07:04  更:2021-09-07 11:08:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 2:01:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码