软件测试 / 测试开发丨学习笔记之 Web 自动化测试
获取更多相关知识
本文为霍格沃兹测试开发学社学员学习笔记分享,文末附原文链接
Web 自动化的价值和体系
1、什么时候可以做 UI 自动化测试
业务流程不频繁改动
UI 元素不频繁改动
需要频繁回归的场景
核心场景等
2、 Web 自动化测试相关技术
Selenium:支持多语言,行业内最火最主流
Pytest/JUnit5:最好用最全面的单元测试框架
Allure:测试报告
Selenium 简介
用于 web 浏览器测试的工具
支持的浏览器包括 IE,Firefox,Safari,Chrome,Edge 等
使用简单,可使用 Java,Python 等多种语言编写用例脚本
主要由三个工具构成:WebDriver、IDE、Grid
Selenium 环境配置步骤
准备好 Python/Java 环境
准备好 selenium 依赖
driver 的下载与配置(Mac 与 Windows 不同)
在代码中 import 对应的依赖
自动化测试用例结构分析
用例标题
前提条件
用例步骤
预期结果
实际结果
web 浏览器控制
get 方法打开浏览器*
refresh 方法刷新页面
用 back 方法回退到上一个界面
maximize_window 方法使窗口最大化
minimize_window 方法使窗口最小化
常见控件定位方法
class name class 属性对应的值 css selector(重点)css 表达式 id(重点) id 属性对应的值 name(重点) name 属性对应的值 link text 查找其可见文本与搜索值匹配的锚元素 partial link text 查找其可见文本包含搜索值的锚元素。如果多个元素匹配,则只会选择第一个元素。 tag name 标签名称 xpath(重点) xpath 表达式
selenium 常用定位方式
强制等待与隐式等待 1、强制等待
强制等待,线程休眠一定时间
time.sleep(3)
2、隐式等待
原理:设置一个等待时间,轮询查找(默认 0.5 秒)元素是否出现,如果没出现就抛出异常
隐式等待无法解决的问题
元素可以找到,使用点击等操作,出现报错
原因: 页面元素加载是异步加载过程,通常 html 会先加载完成,js、css 其后 元素存在与否是由 HTML 决定,元素的交互是由 css 或者 js 决定 隐式等待只关注元素能不能找到,不关注元素能否点击或者进行其他的交互
解决方案:使用显式等待
常见控件交互方法
点击,输入,清空
点击百度搜索框
输入”霍格沃兹测试开发”
清空搜索框中信息
自动化测试定位策略
选择定位器通用原则
与研发约定的属性优先(class 属性: [name='locate'])
身份属性 id,name(web 定位)
复杂场景使用组合定位:
xpath,css
属性动态变化(id,text)
重复元素属性(id,text,class)
父子定位(子定位父)
js 定位
Web 弹框定位
场景 web 页面 alert 弹框
解决: web 需要使用 driver.switchTo().alert() 处理
下拉框/日期控件定位
场景: <input>标签组合的下拉框无法定位 <input>标签组合的日期控件无法定位
解决: 面对这些元素,我们可以引入 JS 注入技术来解决问题。
文件上传定位
场景: input 标签文件上传
解决: input 标签直接使用 send_keys()方法
版权声明: 本文为 InfoQ 作者【测试人】的原创文章。
原文链接:【http://xie.infoq.cn/article/ecec088b1a690cef651aab335】。文章转载请联系作者。
评论