Selenium Java + webdriver+ Maven + TestNG + ExtentReports 自动化测试框架

芒果小子 · 2018年11月30日 · 最后由 会说话的汤姆猫 回复于 2019年04月26日 · 662 次阅读

Selenium 是一个用于 Web 应用程序测试的工具。Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括 IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera 等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl 等不同语言的测试脚本。

目前主流的 web 测试框架底层都是基于 selenium,这个框架开发门槛很低,是为了让组内不会开发的测试人员参与脚本编写所搭建的,很早之前就看到有人发,所以我决定也发出来让人参考参考。

框架介绍
Java + webdriver+ Maven + TestNG + ExtentReports
1.使用 Java 作为项目编程语言
2.使用 Selenium 作为 Web 项目底层服务驱动框架,实现了基于 Selenium,WebDriver 等常用操作方法的二次封装,全局智能等待,解决 ajax 异步等问题。
3.使用 Maven 作为项目类型
4.使用 TestNG 作为项目运行框架,结合 ExtentReports,利用 TestNG 的监听机制实现报表生成、邮件发送以及失败自动截图等
5.使用 JDBC 作为数据库管理工具
a.实现测试前插入业务数据,测试后删除数据
b.从数据库获取数据要素,实现字段级别的验证或者运行环境要素
6.采用 PageObject 设计模式,对象库文件参数(例如 LoginPage.xml)+ 对象类(例如 LoginPage.java)+ 逻辑操作类(例如 LoginAction.java),实现元素对象库管理,页面元素信息与代码分离
7.使用 Svn 作为仓库管理工具,方便管理项目代码
8.引入 opencv 实现元素截图比对并且 diff 验证样式以及页面数据
9.引入 tessract-OCR 实现图形验证码自动获取
10.使用 Jenkins 作为自动化持续集成平台,自动编译,自动打包,自动运行,实现 web 测试项目发布后触发自动化测试,起到回归测试的功效

环境配置
1.Windows
2.Jdk1.8 以上
3.Mozilla Firefox(Geckodriver )
4.Chrome(ChromeDriver ) 
5.IE(IEDriverServer)
6.Maven 
7.Svn
8.VC2010 以上(ocr 要求)
9.Jenkins

一、创建对象库

对象库文件到对象类文件即实现 xml 解析装载,已做成通用脚本,这里为 PageObjectAutoCode.java 。编写完后,运行 PageObjectAutoCode.java 文件生成对象库 java 代码

二、编写逻辑操作类

三、编写测试类

四、编写 testng.xml
Testng.xml 采用总分结构控制。
分:配置测试类以及相关参数

集成到总的 testng.xml,在此配置邮件

五、业务数据绑定
编写 testng.xml 时,需要额外配置 initDbPath 以及 restoreDbPath,即两个 sql 文件的路径,是为了在用例运行前插入相关业务数据,运行结束后删除业务数据,以实现用例脚本的可重复执行。这里以 suite 为维度做数据控制,利用 testng 的监听机制实现,框架可以做到以 testcase 维度,但是会导致 sql 文件太多,不易管理。

六、报表

七、邮件

八、Jenkins 集成

九、Assert 引擎
除了标准提供的 Assert 类,额外增加了数据库比对以及图片比对,这里展示一下图片比对的效果
红色标注轮廓

共收到 14 条回复 时间 点赞

请问 债权有效时间是根据当前时间生成入库,然后执行测试的么?
换句话说 切换服务器到 10 年以后 ,造测试数据,这个债权还能转让么

个人觉得,还要写一堆代码,实用性不高

仅楼主可见
冰镇 回复

你需要哪种程度的源码,目前很多公司的业务数据在里面

渐次消逝 回复

你说的是关键字驱动吧,录制脚本稳定性很差,手写可以认为插桩输出,还可以根据相应的测试要求调整,个人认为测试开发的优势区别测试在于开发能力,所以代码丢不得

hellohell 回复

开发的功能会一直迭代,你的数据在一定时候后也是需要更新的

这段看起来就让人觉得不喜欢了:

框架太大 可能案例比较合适

槽神 回复

解析页面元素位置,都是自动生成的,后来也没想到特别好的办法关联

TestDevWay 回复

框架本身不大,只是一直提出要求而在扩展

芒果小子 回复

方法多得很:注解、配置文件、配置中心……

槽神 回复

效果和这个本质是一样的

芒果小子 回复

嗯嗯嗯,你说得对

关键字驱动 low 得很

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册