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 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 软件测试(自动化之web端自动化5——selenium等待机制) -> 正文阅读

[开发测试]软件测试(自动化之web端自动化5——selenium等待机制)

上节讲了关于元素交互的几个基础操作。然后我们在不断的模拟用户交互的时候,有时会遇到一些问题。比如,点击刷新按钮后,页面刷新较慢,刷新的过程中,代码无法识别到元素,产生相关的报错。

这种场景我们通常是采用“等待”的方式去完成的。

这里我们介绍三种等待方式:

一、强制等待

所谓强制等待,就是指定一个时间,我们去固定这个时间等待,等待时间完成后,再进行下一步。

比如这里的 time.sleep()方法。

这个是为了方便我截图,在完成交互后,等待2s,展示页面,再去关闭会话。

上面介绍的强制等待呢,在某些场景是不太好用的。

比如一个页面刷新,可能要1-10s,你不知道它每次到底多少秒,为了保证脚本顺利跑完不报错,你可能会设置成最大值10s。那么就会导致脚本的运行效率极低,因为你每次都是按最大等待时长去进行等待的。

这里官方提供了2种等待方式——显式等待、隐式等待,可以在元素刷新出现后,停止等待,直接运行接下来的操作。

二、显式等待

WebDriverWait()

它允许您的代码暂停程序执行,或冻结线程,直到满足通过的 条件

这个条件会以一定的频率一直被调用,直到等待超时。

默认检测频率为0.5s,默认抛出异常为:NoSuchElementException。

from selenium.webdriver.support.wait import WebDriverWait

WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

driver:浏览器驱动
timeout:最长超时时间,默认以秒为单位
poll_frequency:检测的间隔步长,默认为0.5s
ignored_exceptions:超时后的抛出的异常信息,默认抛出NoSuchElementExeception异常

配合until()方法使用

WebDriverWait(driver, 超时时长, 调用频率, 忽略异常).until(可执行方法, 超时时返回的信息)

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
WebDriverWait(driver, 20).until(EC.visibility_of_element_located(locator))

这里的visibility_of_element_located ,指元素存在且可见

三、隐式等待

implicitly_wait()

设置的全局等待,对页面中的所有元素设置加载时间,如果超出了设置时间的则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。

driver.implicitly_wait(10)

设置全页面超时时间为10秒

警告:?不要混合使用隐式和显式等待。这样做会导致不可预测的等待时间。例如,将隐式等待设置为10秒,将显式等待设置为15秒,可能会导致在20秒后发生超时。)

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:30:22  更:2022-03-17 22:30: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年11日历 -2024/11/18 0:43:59-

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