java+selenium+testNG+Allure报表【新增截图到报表功能】
1.pom.xml配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xiaobing</groupId>
<artifactId>web_auto</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<aspectj.version>1.8.10</aspectj.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.qameta.allure</groupId>
<artifactId>allure-testng</artifactId>
<version>2.12.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<argLine>
-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
</argLine>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
2.截图监听器:TestngListener.java
package com.test.util; import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
import com.test.cases.BaseCase;
import io.qameta.allure.Attachment;
public class TestngListener extends TestListenerAdapter {
public void onTestFailure(ITestResult tr) {
super.onTestFailure(tr);
BaseCase bt = (BaseCase) tr.getInstance();
WebDriver driver = bt.driver;
takePhoto(driver);
logCaseStep(tr);
exceptedResult(tr);
}
@Attachment(value = "失败截图如下:",type = "image/png")
public byte[] takePhoto(WebDriver driver){
byte[] screenshotAs = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES);
return screenshotAs;
}
/**
* 打印测试步骤
* @param tr
*/
// @Attachment(value = "操作步骤如下:")
public String logCaseStep(ITestResult tr){
String step = "1、打开浏览器 2、输入百度地址";
return step;
}
/**
* 打印测试步骤
* @param tr
*/
// @Attachment(value = "期望结果如下:")
public String exceptedResult(ITestResult tr){
String result = "显示查询结果";
return result;
}
}
代码解释:
使用Allure的@Attachment注解就可以在测试报告里添加附件了,这里添加了截图、测试步骤和期望结果
截图代码((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES)里的driver通过BaseTest类传过来
3.设置监听
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Listeners;
import org.testng.annotations.Parameters;
import com.util.TestngListener;
@Listeners({TestngListener.class})
public class BaseCase {//声明驱动对象
public static WebDriver driver = null;
/**根据浏览器类型去初始化驱动对象(启动浏览器)
* @param browserType
*/
@Parameters(value={"browserType"})
@BeforeSuite
public void init(String browserType){
...........................................if("chrome".equalsIgnoreCase(browserType)){
//chrome
System.setProperty("webdriver.chrome.driver","src/test/resources/chromedriver.exe");
driver = new ChromeDriver();
}
.............................................
}
@AfterSuite
public void teardown() throws InterruptedException{
Thread.sleep(10000);
//关闭浏览器,关闭可执行驱动
driver.quit();
}
}
代码解释:
这是测试用例的基类,具体的测试用例类通过继承BaseTest获取driver
BaseTest加上@Listeners({TestngListener.class})注解,就可以对所有的测试类进行监听了
4.测试方法类
package com.test.cases; import org.testng.Assert;
import org.testng.annotations.Test; public class TestScreenshot extends BaseCase {
@Test
public void test01() {
driver.get("https://www.baidu.com");
Assert.assertEquals(driver.getTitle(), "百度一下,你就知道");
}
@Test
public void test02() {
driver.get("https://www.google.cn/intl/zh-CN/chrome/");
Assert.assertEquals(driver.getTitle(), "百度一下,你就知道");
}
@Test
public void test03() {
driver.get("https://www.google.cn/intl/zh-CN/chrome/");
Assert.assertTrue(driver.getTitle().contains("chrome"), "是否打开chrome官网页面");
}
}
代码解释:
测试用例类,继承BaseCase.java,直接使用BaseCase的driver
5.Testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- 套件 -->
<suite name="TEST系统">
<!-- 测试集/模块 -->
<test name="TEST">
<!-- 测试类集合 -->
<classes>
<class name="com.test.cases.TestScreenshot"></class>
</classes>
</test>
</suite>
6.构建 mvn clean test

7.查看Allure报表 allure serve allure-results



8.后续完善。。。。待续。。。。
参考原文:https://blog.csdn.net/galen2016/article/details/88877395
java+selenium+testNG+Allure报表【新增截图到报表功能】的更多相关文章
- Java+Selenium+Testng自动化测试学习(二)
Java+Selenium+TestNG自动化测试框架整合 1.简化代码 封装一个定位元素的类,类型为ElementLocation package com.test; import org.open ...
- java+Selenium+TestNg搭建自动化测试架构(1)实现代码和数据的分离
1.主要介绍介绍Java+Selenium+POM的自动化测试框架的搭建,第一个首先实现代码和账号URL等信息的分离.第二点支持跨浏览器,通过读取配置文件的方式实现. 1)将账号URL等信息添加在pr ...
- java+Selenium+TestNg搭建自动化测试架构(3)实现POM(page+Object+modal)
1.Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例 ...
- java+Selenium+TestNg搭建自动化测试架构(2)实现跨浏览器功能
1.切换浏览器类:其中包含了切换浏览器的方法,以及关闭浏览器,设置等待时间,以及重写的断言方法 package com.rrx.framework; import java.io.IOExceptio ...
- java + selenium + testng实现简单的UI自动化
新建Maven项目,添加需要的依赖 1.新建一个Maven项目 2.在pom.xml中添加需要的依赖,这里只要selenium和testng就行 <!-- https://mvnreposito ...
- Java&Selenium&TestNG&ZTestReport 自动化测试并生成HTML自动化测试报告
一.摘要 本篇博文将介绍如何借助ZTestReport和HTML模版,生成HTML测试报告的ZTestReport 源码Clone地址为 https://github.com/zhangfei1984 ...
- Java + Selenium + TestNG + Maven
环境准备: 1. Java: Install Java jdk: Version: java 1.8 or aboveConfigure Java Environment Variables:Add ...
- Java+Selenium+Testng自动化测试学习(三)— 断言
1.修改Login类加入断言: 断言:检查我们操作页面后得到的结果与我们预期的结果是否一致. 2.使用xml文件运行所有的测试类: Login类写入两个测试用例: package com.test; ...
- 通过Java + selenium +testNG + Page Objects 设计模式 实现页面UI的自动化
Page Objects 设计模式 简单的讲,类似与Java面向对象编程,把每个页面都抽象为一个对象类,将页面元素的定位.业务逻辑操作分离开,然后我们可以通过testNG实现业务流程的控制 与 测试 ...
随机推荐
- First Linux Centos 7.2 rpm 安装MySQL 5.7
服务器需要换python环境,手贱重装了,今天凑巧需要测试数据库,花了一个小时搞了一下MySQL安装. 1.删除原有Mariadb 说明:目前centos默认的MySQL是Mariadb,由于习惯了M ...
- P2350-[HAOI2012]外星人【线性筛】
正题 题目链接:https://www.luogu.com.cn/problem/P2350 题目大意 给出\(N\)质因数分解之后的结果,求每次\(N=\varphi(N)\),多少次后\(N=1\ ...
- WPF进阶技巧和实战08-依赖属性与绑定01
依赖项属性 定义依赖项属性 注意:只能为依赖对象(继承自DependencyObject的类)添加依赖项属性.WPF中的元素基本上都继承自DependencyObject类. 静态字段 名称约定(属性 ...
- 终端进程启动失败: shell 可执行文件“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe”的路径不存在。
因为某些原因重新安装1了vscode 和node 遇到了两个棘手的问题 ctrl + ~ 打开终端提示 " 终端进程启动失败: shell 可执行文件"C:\Windows\S ...
- 前端规范之Git工作流规范(Husky + Comminilint + Lint-staged)
代码规范是软件开发领域经久不衰的话题,几乎所有工程师在开发过程中都会遇到或思考过这一问题.而随着前端应用的大型化和复杂化,越来越多的前端团队也开始重视代码规范.同样,前段时间,笔者所在的团队也开展了一 ...
- 解决vue项目中遇到父组件的按钮或操作控制重新挂载子组件但是子组件却无效果的情况
在vue项目中终会遇到需要父组件的按钮或操作控制重新挂载子组件的需求,我在新项目中就遇到这种需求.真实场景是父组件的早,中,晚三个按钮(代表三个时间段)来控制子组件的table表格列的动态加载. 子组 ...
- JVM堆内存泄露分析
一.背景 公司有一个中间的系统A可以对接多个后端业务系统B,一个业务系统以一个Namespace代表, Namespace中包含多个FrameChannel(用holder保存),表示A连接到业务 ...
- 6.堆和GC
一. 堆和GC介绍 1.java堆的特点 <深入理解java虚拟机>是怎么描述java堆的 Java堆(Java Heap)是java虚拟机所管理的内存中最大的一块 java堆被所有线程共 ...
- k8s调度器介绍(调度框架版本)
从一个pod的创建开始 由kubectl解析创建pod的yaml,发送创建pod请求到APIServer. APIServer首先做权限认证,然后检查信息并把数据存储到ETCD里,创建deployme ...
- 题解 「HDU6403」卡片游戏
link Description 桌面上摊开着一些卡牌,这是她平时很爱玩的一个游戏.如今卡牌还在,她却不在我身边.不知不觉,我翻开了卡牌,回忆起了当时一起玩卡牌的那段时间. 每张卡牌的正面与反面都各有 ...