IWeb4j 项目解决web自动化回归测试痛点!
IWeb4j 项目思想
- IWeb项目的测试用例使用数据驱动测试,当下数据驱动使用最多的无非是excel、yaml、json、数据库(后续通过SpringDataJPA实现数据库驱动)作为数据驱动的载体,四种方式思想都一样只是实现方式不同。
目前先实现excel数据源驱动。通过开源的Easypoi文档导入导出工具完成,后续会新增数据库、yaml文件的数据驱动方式。 - 页面元素定位使用封装的关键字库测试,通过dom4j解析xml方式实现。
- 整体项目属于混合模型开发测试,整体只用显示等待解决元素加载可见可编辑问题
项目主要技术
该项目主要技术
| 技术 | 用途 | 备注 |
|---|---|---|
| springboot | 后端项目框架 | 后期可扩展平台 |
| lombok | java实用工具 | 通过注解减少代码量 |
| testNG | 测试用例执行套件 | 控制测试流程 |
| allure | 魅力的测试报告工具 | 测试报告 |
| Easypoi | 文档的导入导出工具 | 数据驱动,读写excel测试用例 |
| dom4j | xml的dom树解析工具 | 元素关键字的实现载体 |
| log4j2 | 日志工具 | 记录系统日志 |
| selenium | 通过WebDriver API 操作页面 | 模拟真实用户操作 |
| ... | ... | ... |
IWeb4j 各包目录结构说明

项目使用流程
- 配置文件的加载
IWeb4j项目使用yaml配置文件
eg:页面关键字维护的页面元素xml文件通过yaml配置文件路径

然后通过yaml的key注入配置文件路径

excel测试用例读写通过Easypoi实现
excel维护测试用例也是一种很常见的方式,和常用的功能测试用例几乎没有差别,只是对excel的表头进行数据映射处理。如下:页面元素关键定位通过dom4j解析xml的dom树实现元素定位

维护的页面元素关键字也是通过映射成数据对象进行获取


- 测试用例维护

- 映射成dto数据的对象

通过Easypoi封装的工具类拿到一个集合,然后遍历集合进行读取excel用例进行测试

整个项目的页面关键字工具类UIElementUtil异常捕获中加入allure的截图功能

这样在元素定位失败或者超时异常后都可以捕获异常并截图至allure报告中。测试完成后会在项目下更新allure-results文件夹,然后通过allure命令即可访问测试报告(如果想集成jenkins网上有很多教程很简单),allure-results的注解使用点击查看
效果如下:


IWeb4j 项目解决web自动化的痛点
- 对于web自动化项目来说痛点在于:元素加载不稳定,自动化运行不稳定、测试数据的后期维护力度大等因素让很多人不愿意去做web端的自动化测试。但是如果解决好上面的情况,web自动化的痛点自然就得到了解决。而IWeb4j 项目只使用显示等待来解决元素加载问题,页面元素通过关键字定位更易于理解,测试用例使用excel管理更易于上手,自动化运行中使用allure截图来捕获异常作为证据的查看更直观。
IWeb4j 更改测试数据及维护说明
- 页面元素定位数据维护(web自动化测试建议使用css定位效率更高)
页面元素维护通过维护xml文件来解决,如图:

- 测试用例维护通过excel来维护,如图:

- 需要通过easypoi来获取excel的数据源,然后通过封装UIElementUtil工具类的sendInput()/clickPop()/clickButton()...等方法的调用来完成元素的操作。
public void loginCase() {
UIElementUtil.clickButton("百度登录","点击右上角登录按钮",driver);
UIElementUtil.clickButton("百度登录","点击账号密码登录按钮",driver);
String loginDatasPath = "src/main/resources/pagesxml/baidulogin.xls";
List<EasyPoiDatas> loginDatas = EasyPoiUtil.importExcel(loginDatasPath,1,1, EasyPoiDatas.class);
//过滤Easypoi读取表格多出两行为空的数据
List<EasyPoiDatas> loginDatasNotEmPty = loginDatas.stream().filter(loginData -> loginData.getName() != null || loginData.getDesc() != null || loginData.getFlag() != null || loginData.getPwd() != null).collect(Collectors.toList());
//新的集合存放新的测试数据和测试结果
List<EasyPoiDatas> collectS = new ArrayList<>();
for (EasyPoiDatas loginData :loginDatasNotEmPty ) {
try {
//由于EasyPoiUtil工具类对于空表格返回为null,sendKeys方法源码中不允许为null或0,这做下转换
UIElementUtil.sendInput("百度登录","登录账号",driver,loginData.getName()==null? "" : loginData.getName());
UIElementUtil.sendInput("百度登录","登录密码",driver,loginData.getPwd()==null? "" : loginData.getPwd());
UIElementUtil.clickButton("百度登录","登录按钮",driver);
String getResponseTip = driver.findElement(AccountData.TIPS).getText();
loginData.setActual(getResponseTip);
WebElement element = UIElementUtil.getElementByKeyword("百度登录","登录按钮",driver);
AssertWebUtil.textToBePresentInElement(element,"期望结果",driver);
} catch (Exception e) {
e.printStackTrace();
}
collectS.add(loginData);
}
if (collectS.size() == 0){
System.out.println("测试用例无数据,请查看");
}else {
//3.将所有实际获取结果写入实际结果中
EasyPoiUtil.exportExcel(collectS,"测试用例集","登录用例", EasyPoiDatas.class,loginDatasPath, true);
}
}
- 如果想使用该项目请访问github源码地址,好用的话记得给个star
)
更多测试技术分享、学习资源以及一些其他福利可关注公众号:【Coding测试】获取:

IWeb4j 项目解决web自动化回归测试痛点!的更多相关文章
- UI自动化的痛点
解决UI自动化难点痛点: 解决从安装过程中跳出的提示框以及操作过程中任意提示框的操作,来提高用例成功率: 公用用例及业务用例分离,便于维护和多人使用,提高脚本编写效率: 解决用android wind ...
- Selenium Web 自动化 - 项目持续集成
Selenium Web 自动化 - 项目持续集成 2017-02-13 目录 1环境准备 1.1 安装git 1.2 安装jenkins 1.3 安装jenkins插件 1.4 jekins ...
- Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」
1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...
- Selenium Web 自动化 - 项目实战(三)
Selenium Web 自动化 - 项目实战(三) 2016-08-10 目录 1 关键字驱动概述2 框架更改总览3 框架更改详解 3.1 解析新增页面目录 3.2 解析新增测试用例目录 3. ...
- Selenium Web 自动化 - 项目持续集成(进阶)
Selenium Web 自动化 - 项目持续集成(进阶) 2017-03-09 目录 1 背景及目标2 环境配置 2.1 SVN的安装及使用 2.2 新建Jenkins任务3 过程分析 1 背景 ...
- Selenium Web 自动化 - 项目实战环境准备
Selenium Web 自动化 - 项目实战环境准备 2016-08-29 目录 1 部署TestNG 1.1 安装TestNG 1.2 添加TestNG类库2 部署Maven 2.1 mav ...
- Selenium Web 自动化 - 项目实战(一)
Selenium Web 自动化 - 测试框架(一) 2016-08-05 目录 1 框架结构雏形2 把Java项目转变成Maven项目3 加入TestNG配置文件4 Eclipse编码修改5 编写代 ...
- Selenium Web 自动化 - 项目实战(二)
Selenium Web 自动化 - 项目实战(二) 2016-08-08 什么是数据驱动?简答的理解就是测试数据决定了测试结果,这就是所谓数据驱动.数据驱动包含了数据,他就是测试数据,在自动化领域里 ...
- 用eclipse 检索SVN 上 myEclipse 建的web项后,成java项目解决方法
用eclipse 检索SVN 上 myEclipse 建的web项后,成java项目解决方法 在网上找了非常多,都无论用. 说添加.project 文件几个属性.但我发现里面都有,在我这里无论什么用. ...
- Web自动化---解决登录页面随机验证码问题
一.抛出问题 在日常的测试工作中,遇到了这样一个登录页面,如下图: 像我们之前做过UI自动化的同学就知道,自动输入账号和密码,这个简单,但是怎么样来识别验证码呢?验证码的形式有多种,有纯数字的,纯字母 ...
随机推荐
- 官网使用conda&pip安装PyTorch命令总结(包含各版本)
原网页https://pytorch.org/get-started/previous-versions/ 因为有时访问该网站比较慢,所以本博客记录该网页内容 Installing previous ...
- 最详细STL(四)priority_queue
好吧,开始累了,不想写那么多废话了,直接讲对打oj有用的部分吧. priority_queue是由堆来实现的,底层是用vector来实现的,接收三个参数 priority_queue<int , ...
- maven 插件之 maven-shade-plugin,解决同包同名 class 共存问题的神器
开心一刻 有一天螃蟹出门,不小心撞倒了泥鳅泥鳅很生气地说:你是不是瞎啊!螃蟹说:不是啊,我是螃蟹 概述 maven-shade-plugin 官网已经介绍的很详细了,我给大家简单翻译一下 This p ...
- 西瓜杯 WP
RE 一个西瓜切两半你一半我一半 有点谜语,文本给的是输出和key # Visit https://www.lddgo.net/string/pyc-compile-decompile for mor ...
- sicp每日一题[1.45]
Exercise 1.45 We saw in Section 1.3.3 that attempting to compute square roots by naively finding a f ...
- 五子棋AI:实现逻辑与相关背景探讨(上)
绪论 本合集将详细讲述如何实现基于群只能遗传算法的五子棋AI,采用C++作为底层编程语言 本篇将简要讨论实现思路,并在后续的文中逐一展开 了解五子棋 五子棋规则 五子棋是一种经典的棋类游戏,规则简单却 ...
- parser.add_argument
parser.add_argument 在解析参数时,有个地方很值得注意. --dict-name,会把dict-name解析为变量dict_name.也就是说会把破折号转成下划线.
- verilog vscode 与AI 插件
Verilog 轻量化开发环境 背景 笔者常用的开发环境 VIAVDO, 体积巨大,自带编辑器除了linting 能用,编辑器几乎不能用,仿真界面很友好,但是速度比较慢. Sublime Text, ...
- ant-design-vue 登录表单校验
最近刚刚上手了 Vue3 的 antdv ui框架,来做个简单的登录校验练练手 安装 antdv 依赖 npm install ant-design-vue --save 在 main.ts/js 中 ...
- 对于ChannelNet的一点理解
主要是为了个人理解,做个笔记 1.Pytorch代码 2.论文出处 3.详细介绍 这篇论文在2018年发出来,而ShuffleNet是从2017年由旷视发出来.起初了解shufflenet的提出,主要 ...