一个简单的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. 规范使用常量
相关推荐
爱和冰阔落13 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisw0513 小时前
基于神经网络的机器人导航系统的设计与执行!
神经网络·机器人·自动化
lisanmengmeng13 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
严肃小白兔14 小时前
Cloudflare 更新 API Token 管理:从最小权限到自动化凭据安全
网络·安全·自动化
Android系统攻城狮14 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
上火的金鱼妹14 小时前
k8s生产实际问题排查(网关,数据库读写等)
运维·服务器
孙克旭_14 小时前
k8s基础组件与创建资源
运维·docker·容器·kubernetes
2601_9687931414 小时前
Python Requests 轻量自动化:无需浏览器,实现真人级账号浏览模拟
开发语言·python·自动化
孙克旭_15 小时前
云原生基础之Containerd容器运行时
运维·云原生
分布式存储与RustFS15 小时前
RustFS 自建对象存储实战目录:110 篇按场景分类(持续更新)
运维·云原生·开源·对象存储·分布式存储·s3·性能基准