Java自动化测试(web自动化测试框架2 29)
时间:2022-07-25
本文章向大家介绍Java自动化测试(web自动化测试框架2 29),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
项目地址:https://github.com/zx490336534/java_web_base
截图
package com.zhongxin.demo;
import com.zhongxin.common.BaseCase;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;
import java.io.File;
public class ScreenShotDemo extends BaseCase {
@Test
public void test() throws Exception {
WebDriver driver = open("chrome");
driver.get("htts://www.baidu.com");
Thread.sleep(2000);
TakesScreenshot screenshot = (TakesScreenshot) driver;
File file = screenshot.getScreenshotAs(OutputType.FILE);
System.out.println(file.getAbsoluteFile());
File destFile = new File("aaa.png");
FileUtils.moveFile(file, destFile);
close(driver);
}
}
强制类型转换driver
TakesScreenshot screenshot = (TakesScreenshot) driver;
在执行测试的时候,使用截图的场景为:当执行失败的时候进行截图
需要使用监听
,判断执行是否成功
package com.zhongxin.listeners;
import com.zhongxin.cases.LoginCase;
import com.zhongxin.common.BaseCase;
import com.zhongxin.utils.ScreenShotUtils;
import org.testng.IHookCallBack;
import org.testng.IHookable;
import org.testng.ITestResult;
public class ScreenShotListener implements IHookable {
@Override
public void run(IHookCallBack iHookCallBack, ITestResult iTestResult) {
// iHookCallBack 用例执行@Test方法的
// iTestResult @Test方法的结果(@Test对象/方法名/是否抛出异常)
iHookCallBack.runTestMethod(iTestResult);
Throwable throwable = iTestResult.getThrowable();
if (throwable != null) {
//throwable不等于异常说明@Test出现异常了,执行截图
Object object = iTestResult.getInstance();
BaseCase logincase = (BaseCase) object;
//获取当前@Test方法名
String methodName = iTestResult.getName();
//获取当前@Test类名
String className = iTestResult.getInstanceName();
String destFilename = className + "_" + methodName + "_" + System.currentTimeMillis() + ".png";
ScreenShotUtils.screenShot(logincase.driver, destFilename);
}
}
}
在testng.xml
中添加
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="futureloan">
<listeners>
<listener class-name="com.zhongxin.listeners.ScreenShotListener"></listener>
</listeners>
<test name="登录测试">
<classes>
<class name="com.zhongxin.cases.LoginCase"></class>
</classes>
</test>
</suite>
将截图展示在Allure报告中
package com.zhongxin.listeners;
import com.zhongxin.common.BaseCase;
import io.qameta.allure.Attachment;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.testng.IHookCallBack;
import org.testng.IHookable;
import org.testng.ITestResult;
public class AllureReportListener implements IHookable {
@Attachment(value = "Page screenshot", type = "image/png")
public byte[] saveScreenshot(byte[] screenShot) {
return screenShot;
}
@Override
public void run(IHookCallBack iHookCallBack, ITestResult iTestResult) {
iHookCallBack.runTestMethod(iTestResult);
Throwable throwable = iTestResult.getThrowable();
if (throwable != null) {
//throwable不等于异常说明@Test出现异常了,执行截图
Object object = iTestResult.getInstance();
BaseCase baseCase = (BaseCase) object;
TakesScreenshot screenshot = (TakesScreenshot) baseCase.driver;
byte[] screenshotAs = screenshot.getScreenshotAs(OutputType.BYTES);
saveScreenshot(screenshotAs);
}
}
}
在testng.xml
中
<listeners>
<listener class-name="com.zhongxin.listeners.AllureReportListener"></listener>
</listeners>
重试
package com.zhongxin.listeners;
import org.testng.IRetryAnalyzer;
import org.testng.ITestResult;
public class MyRetry implements IRetryAnalyzer {
private int retryCount = 0;//当前重试次数
private static final int maxRetryCount = 3;//最大重试次数
@Override
public boolean retry(ITestResult iTestResult) {
if (retryCount < maxRetryCount) {
retryCount++;
return true;
}
return false;
}
}
在测试代码头部增加
@Test(retryAnalyzer = MyRetry.class)
全部添加重试
package com.zhongxin.listeners;
import com.zhongxin.common.BaseCase;
import io.qameta.allure.Attachment;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.testng.IHookCallBack;
import org.testng.IHookable;
import org.testng.ITestResult;
public class AllureReportListener implements IHookable {
@Attachment(value = "Page screenshot", type = "image/png")
public byte[] saveScreenshot(byte[] screenShot) {
return screenShot;
}
@Override
public void run(IHookCallBack iHookCallBack, ITestResult iTestResult) {
iHookCallBack.runTestMethod(iTestResult);
Throwable throwable = iTestResult.getThrowable();
if (throwable != null) {
//throwable不等于异常说明@Test出现异常了,执行截图
Object object = iTestResult.getInstance();
BaseCase baseCase = (BaseCase) object;
TakesScreenshot screenshot = (TakesScreenshot) baseCase.driver;
byte[] screenshotAs = screenshot.getScreenshotAs(OutputType.BYTES);
saveScreenshot(screenshotAs);
}
}
}
在testng.xml
中
<listener class-name="com.zhongxin.listeners.RetryListener"></listener>
- 完整的golang 多协程+信道 任务处理示例
- 2014---多校训练一(A Couple doubi)
- hdu----(2586)How far away ?(DFS/LCA/RMQ)
- Golang控制goroutine的启动与关闭
- spring-boot-starter-swagger迎新伙伴支持,加速更新进度(1.3.0.RELEASE)
- poj----(1470)Closest Common Ancestors(LCA)
- 测试一下golang协程资源占有率
- poj----1330Nearest Common Ancestors(简单LCA)
- fasthttp中的协程池实现
- Oracle 12c R2版本 Application Containers 特性(二)
- go sync.Mutex 设计思想与演化过程 --转
- hadoop开发必读:认识Context类的作用
- Logback+ELK+SpringMVC搭建日志收集服务器
- 【译】Spring 官方教程:创建批处理服务
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- VMware安装CentOS7 3.1 主机名修改3.2 网卡名修改3.3 ifconfig安装
- VMware网络设置
- Destoon 6.0 guestbook.php 通用SQL注入漏洞
- Hadoop2.7.6_01_部署
- Hadoop2.7.6_02_HDFS常用操作
- Bottle HTTP 头注入漏洞探究
- Hadoop2.7.6_03_HDFS原理
- Hadoop2.7.6_04_HDFS的Shell操作与常见问题
- Hadoop2.7.6_05_mapreduce-Yarn
- Hadoop2.7.6_06_mapreduce参数优化
- NFS服务搭建与配置
- Hadoop2.7.6_07_HA高可用
- Hadoop2.7.6_08_Federation联邦机制 1.1. HDFS-federation图解2.1. 注意事项3.1. 部署3.2. 环境变量3.3. c
- ThinkPHP5 SQL注入漏洞 && PDO真/伪预处理分析
- Hive-1.2.1_01_安装部署