作者:甜甜deX | 来源:互联网 | 2023-09-05 09:05
一.Selenium是一个用于Web应用程序的自动化测试的工具支持的浏览器有IE,FireFOx,Chrom等,这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是
一.Selenium
是一个用于Web应用程序的自动化测试的工具支持的浏览器有IE,FireFOx,Chrom等,这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。
二.testNg测试框架
testNg是一个Java的测试框架,主要用来做自动化
- 利用Parameters注解将test.xml中启动的浏览器(IE,FireFOx,Chrom等)参数传递给初始化浏览器驱动的方法
2 .利用注解实现测试方法的执行顺序,比如:
利用@BeforeSuite注解在test.xml中在某个测试套件(suite)所有测试方法执行前选择浏览器驱动和加载元素定位方法
利用@AfterSuite注解在test.xml中在某个测试套件(suite)所有测试方法执行结束后退出浏览器驱动
3.支持数据驱动,DataProvider注解的方法是数据提供者,一般返回Object[][] 和 Iterator两种类型,
Test注解的方法是数据接收者,接收DataProvider注解的方法传过来的数据进行测试
Iterator:用于把数据存入在一个实体类里,即数据按“对象”存储
Object[][]:一般把数据存放在Excel里
4.利用testNg的IHookable监听器实现失败截图**,并把失败截图附到Allure测试报告中**
4.1.新建一个类实现把截图存放在指定路径中(getScreenshotAs)的方法
4.2.新建一个类实现IHookable接口,有一个方法调用截图方法把方法和截图附到Allure报告中
另一个方法需重写run方法,如果标注为@Test的方法出现异常则调用2中的方法测试方法实现失败截图
5.利用testNg的IAnnotationTransformer,ITestListener监听器实现全局失败重试
5.1.新建一个类实现实现IRetryAnalyzer接口,重写retry方法,有两个变量:运行重试的最大次数和公共静态变量正在运行的次数
5.2.新建一个类实现IAnnotationTransformer接口,重写transform方法,作用是监听所有被Test标注的方法是否有retryAnalyzer属性
如果有次属性,则不会执行我们设定的重跑机制
5.3.新建一个类继承TestListenerAdapter类,重写onTestFailure和onTestSuccess方法,作用是每条案例重跑次数用完后,重置当前正在运行的次数为初始值
以便于下一条案例失败重试
5.4.新建一个类实现ITestListener接口,重写onFinish方法,作用是把重试的方法都记录到skipped里了,会影响测试报告总数,所有记录要从skipped移除
5.5.将2.3.4步的监听器添加到在test.xml中
6.支持并发测试,testng.xml中
parallel:TestNG是否运行不同的线程来运行这个套件,默认为none,其他级别为methods、tests、classes、instances
7.可通过testng.xml管理执行测试用例
三.Allure生成测试报告
Allure是一款轻量级并且非常灵活的开源测试报告框架,它支持绝大多数测试框架, 例如TestNG
四.利用Excel进行测试案例管理
表头:IsNegative(是否为正向用例),Desc(用例描述),ErrorTips(错误提示期望值),页面输入框字段 等
每一个Excel的Sheet数据都要要封装成一个对象,所以每个excel的Sheet的表头都要新建实体类
利用POI技术读取EXCEl中的数据,利用反射把Excel的数据存入到List集合中,然后把List集合转换成为二维数组,因为DataProvider注解的方法是数据提供者,一般返回Object[][] 。
四.利用Jenkins进行持续集成
源码管理:Svn,构建触发器:H 20 * * 1,3,5每周1/3/5执行20点一次,构建:maven命令clean test执行测试,构建后操作:发送邮件(Allure报告,构建日志)
五.公用方法
1.选择浏览器驱动
2.加载json字符串
3.初始化1和2的方法
4.获取WebElement方法
5.定位元素高亮显示
6.访问某一地址
7.写入内容
8.点击
9.获得文本值
10.切换Iframe
11.断言
12.下拉选择
13.多窗口的切换
14.退出浏览器
15等待
16.执行Js函数
17.判断页面加载超时
18弹出框处理
19键盘操作