一个简单的UI自动化框架应用介绍

项目框架介绍

该数据自动校验小程序采用POM模型,基于Java+selenium+testng+extentsreport+excel POI开发。

框架核心功能

  1. 基于PMO模型将页面封装成java对象,并通过selenuim驱动浏览器进行操作。
  2. 通过excel POI对excel文件进行操作,通过对比导出报表excel文件的方式完成数据校验
  3. 通过testng驱动测试用例,配置灵活,测试方式多样化
  4. 使用maven构建项目,简化依赖管理,可以使用jenkins进行持续测试集成
  5. 通过extentsreport插件扩展testng测试报告,测试完成可自动生成测试报告,记录所有测试用例的执行情况及展示统计信息,并通过钉钉消息的方式发送给相关干系人

Selenium中使用POM的特点和优点

  1. 能帮我们维护代码和减少代码的重复
  2. 在具体实施中,一个页面看做一个页面对象,每个页面写一个类。
  3. 你可以把一个页面的元素的全部定位方式和该页面的业务操作方法写在一个类文件,然后在测试脚本类文件去调用页面类的元素和方法。这样就有一个好处,你的软件在某一个界面出现了变化,你只需要修改对应页面的元素定位和相关方法,而不需要去修改你的测试脚本,当然除非你这个页面由于需求问题,之后被砍了,你才要去修改你的测试脚本类。
  4. 在POM中,我们把测试脚本和页面对象分层,例如页面对象统一放一个包下面,测试用例脚本统一放另外一个包下,到达测试脚本和页面对象分离。

项目结构介绍

  1. 目录如下:
  1. Framework

用于Selenium方法的二次封装和页面基类:利用继承的特点,减少我们重复代码量。将每个模块或者相关功能的一些公共的方法或者公共的元素,封装到页面基类里来。

浏览器引擎类:加载浏览器驱动;设置默认导出路径;设置浏览器静默启动;打开测试地址获取浏览器驱动

  1. PageObject

用于存放元素page层的封装

  1. pageObject.dataSetPage

用于封装通过数据集方式创建的卡片

  1. pageObject.dataSetPage

用于封装通过自定义SQL方式创建的卡片

  1. pageObject.function

excel数据对比方法

登录方法

  1. testSuite

测试用例集合

  1. 存放谷歌驱动
  1. 工具类集合

主要包括文件处理类,检索迭代对比文件;excel对比工具类,对excel报表文件进行操作,进行迭代对比;json文件处理类和http客户端类用于发送钉钉消息。

utils下目录文件

  1. testng测试套件 - 测试用例管理集成
  1. Maven插件说明

本次开发使用到两个maven插件,maven-surefire-plugins插件和exec-maven-plugin插件

  1. maven-surefire-plugins插件说明:

maven-surefire-plugin是maven里执行测试用例的插件,不显示配置就会用默认配置。这个插件的surefire:test命令会默认绑定maven执行的test阶段。

  1. exec-maven-plugin插件说明:

如果你想在项maven生命周期内,运行一段java代码,或者一段独立的程序,或者说我们所指的预执行,初始化某些值,生成某些不能预先生成的文件。那么这样我们就可以使用exec-maven-plugin进行程序的预执行,生成相关文件。具体配置如下:

待完善的点

  1. 完善断言方法
  2. 增加失败重跑机制
  3. 增加覆盖场景(实时报表场景覆盖)
  4. 优化测试报告
  5. 规范使用常量
相关推荐
Decay__10 分钟前
12_MySQL InnoDB 内存与锁调优 —— Buffer Pool、redo log、隔离级别与锁等待
运维·数据库·sql·mysql·架构
java_logo2 小时前
Docker 部署 Dify:轻松搭建 LLM 应用开发平台
运维·docker·容器
方便面不加香菜3 小时前
Docker Container -- 综合实战案例详解
运维·docker·容器
海洋之恒4 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·自动化·github
迪康coolmu6 小时前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
lisw057 小时前
用于医疗的磁驱动柔性微机器人研究进展!
机器人·自动化·硬件工程
qq_371802118 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
逃逸线LOF9 小时前
服务网关Gateway
java·运维·gateway
分布式存储与RustFS10 小时前
OpenSearch 的索引快照别只留本地:用 repository-s3 存进 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准