当前位置: 首页 > news >正文

独立搭建UI自动化测试框架分享

今天给大家分享一个selenium+testng+maven+ant的UI自动化,可以用于功能测试,也可按复杂的业务流程编写测试用例,今天此篇文章不过多讲解如何实现CI/CD,只讲解自己能独立搭建UI框架,如果有其他好的框架也可以联系我,分享一下,或者下面讲解的有不明白的地方也可以留言,需要阅读者有一定的java语言基础,文档中的有些注解我就不详细介绍了,感兴趣的可以去java官网查看。

废话就不多说了,开始实例讲解。

开发工具:idea2017

开发平台:windows

举例模板:百度搜索

开发语言:java

可拓展mysql,shell,api 等

提供:代码demo—打包形式发出

新建java模块:

有两种创建方式

1. 点击欢迎屏幕上的 Create New Project

2. 或选择 File| New | Project

看到打开的新建项目向导窗口

如果你要在现有项目中添加一个模块:打开要添加模块的项目,然后选择File | New | Module.

填写好相关的group和artifact后点击【Next】,最后Finish。

引入驱动,--与src 同级目录新建一个文件夹 lib;

引入pom.xml ,目的是托管所有依赖jia包;--与src同级目录

引入 build.xml,目的是与Jenkins关联实现CI;

引入log4j2.xml,目的打印日志;--在src目录下

新建公共模块包:目的存放公共类

新建元素模块包:目的存放测试元素;

新建步骤模块包:目的测试用例的执行步骤;

新建执行测试模块包:目的执行测试用例;

新建 conf模板包:目的放系统配置文件;

整个项目目录结构如下图所示:

下面是实例化讲解:

1. 新建class—runDriver.class 用于启动浏览器驱动—公共方法

我是基于windows系统开发的,如果是mac 替换一下驱动就行

2. 新建BrowerDriver.class 对浏览器的公共方法

此类下面有 打开和关闭浏览器的公共方法;

3. 新建读写系统文件ReadPreperties.class类

4.     还有很多其他公共的类,在此就不一一讲解了,稍后会提供demo

比如:自动生成手机号,姓名,身份证号等

5.     以百度 为例 开始写 元素类

在com.ui.auto.element 下新建BaiDuElement.class

6.     在com.ui.auto.step下新建BaiDuStep.class

7.     在com.ui.auto.case 下新建BaiDuCase.class

需要引入testng jra包的三个注解
@BeforeTest

将会在一个元素定义的所有里面所有测试方法执行之前运行,在此 先运行 打开浏览器 操作

@Test

要被执行的测试方法

@AfterTest

将会在一个元素定义的所有里面所有的测试方法执行之后运行

通过上面几步 一个模块的ui测试流程基本讲解完成,这个框架的目的就是便于维护,里面也可以添加 api 及 数据源的操作,数据库的关联等,

如何和Jenkins关联呢?

需要在 与src 同目录下新建一个 testng.xml 内容如下:

新建 Jenkins-job 后代码上传到gitlab 上,执行 BaiDuTestng.xml就行(这是和ant 关联);还有另外一种方法 maven,在pom 里配置相关的testng.xml,如下例子

如何通过ant 和Jenkins 实现 CI 及 maven 和Jenkins实现CI 的操作,下期在做讲解,希望通过此篇文章能给您带来 有用的知识,谢谢!

最后工程的整体目录结构,如下图:

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关文章:

  • 【Git】Git基本操作
  • SpringSecurity深度解析与实践(1)
  • 广州华锐互动VRAR:利用VR开展新能源汽车触电安全演练,降低培训成本和风险
  • sfc mcu mesh等webrtc网络结构
  • 【机器学习】密度聚类:从底层手写实现DBSCAN
  • Shell命令与Linux操作系统:深入理解其原理和功能(1/2)
  • Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解
  • Azure Machine Learning - 提示工程高级技术
  • 纵横字谜的答案 Crossword Answers
  • 【.NET Core】反射(Reflection)详解(一)
  • Shell脚本 变量 语句 表达式
  • 3D小球跑酷
  • 监控k8s controller和scheduler,创建serviceMonitor以及Rules
  • 内网穿透的应用-如何结合Cpolar内网穿透工具实现在IDEA中远程访问家里或者公司的数据库
  • Swagger升级指南:Swagger2与Swagger3注解差异揭秘
  • #Java异常处理
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 230. Kth Smallest Element in a BST
  • canvas 高仿 Apple Watch 表盘
  • C学习-枚举(九)
  • JavaWeb(学习笔记二)
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • oldjun 检测网站的经验
  • opencv python Meanshift 和 Camshift
  • PHP的类修饰符与访问修饰符
  • React16时代,该用什么姿势写 React ?
  • 初探 Vue 生命周期和钩子函数
  • 从0到1:PostCSS 插件开发最佳实践
  • 巧用 TypeScript (一)
  • 什么软件可以剪辑音乐?
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 用 Swift 编写面向协议的视图
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • (2)STM32单片机上位机
  • (4)STL算法之比较
  • (TOJ2804)Even? Odd?
  • (备忘)Java Map 遍历
  • (三分钟)速览传统边缘检测算子
  • (五)关系数据库标准语言SQL
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET 8.0 中有哪些新的变化?
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET MVC第五章、模型绑定获取表单数据
  • .net反编译工具
  • .NET开发者必备的11款免费工具
  • .NET下的多线程编程—1-线程机制概述
  • .Net中ListT 泛型转成DataTable、DataSet
  • [ HTML + CSS + Javascript ] 复盘尝试制作 2048 小游戏时遇到的问题
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • []AT 指令 收发短信和GPRS上网 SIM508/548