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报表【新增截图到报表功能】的更多相关文章

  1. Java+Selenium+Testng自动化测试学习(二)

    Java+Selenium+TestNG自动化测试框架整合 1.简化代码 封装一个定位元素的类,类型为ElementLocation package com.test; import org.open ...

  2. java+Selenium+TestNg搭建自动化测试架构(1)实现代码和数据的分离

    1.主要介绍介绍Java+Selenium+POM的自动化测试框架的搭建,第一个首先实现代码和账号URL等信息的分离.第二点支持跨浏览器,通过读取配置文件的方式实现. 1)将账号URL等信息添加在pr ...

  3. java+Selenium+TestNg搭建自动化测试架构(3)实现POM(page+Object+modal)

    1.Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化,只需要调整页面元素封装的代码,提高测试用例 ...

  4. java+Selenium+TestNg搭建自动化测试架构(2)实现跨浏览器功能

    1.切换浏览器类:其中包含了切换浏览器的方法,以及关闭浏览器,设置等待时间,以及重写的断言方法 package com.rrx.framework; import java.io.IOExceptio ...

  5. java + selenium + testng实现简单的UI自动化

    新建Maven项目,添加需要的依赖 1.新建一个Maven项目 2.在pom.xml中添加需要的依赖,这里只要selenium和testng就行 <!-- https://mvnreposito ...

  6. Java&Selenium&TestNG&ZTestReport 自动化测试并生成HTML自动化测试报告

    一.摘要 本篇博文将介绍如何借助ZTestReport和HTML模版,生成HTML测试报告的ZTestReport 源码Clone地址为 https://github.com/zhangfei1984 ...

  7. Java + Selenium + TestNG + Maven

    环境准备: 1. Java: Install Java jdk: Version: java 1.8 or aboveConfigure Java Environment Variables:Add ...

  8. Java+Selenium+Testng自动化测试学习(三)— 断言

    1.修改Login类加入断言: 断言:检查我们操作页面后得到的结果与我们预期的结果是否一致. 2.使用xml文件运行所有的测试类: Login类写入两个测试用例: package com.test; ...

  9. 通过Java + selenium +testNG + Page Objects 设计模式 实现页面UI的自动化

    Page Objects 设计模式 简单的讲,类似与Java面向对象编程,把每个页面都抽象为一个对象类,将页面元素的定位.业务逻辑操作分离开,然后我们可以通过testNG实现业务流程的控制 与 测试 ...

随机推荐

  1. Redis限流

    在电商开发过程中,我们很多地方需要做限流,有的是从Nginx上面做限流,有的是从代码层面限流等,这里我们就是从代码层面用Redis计数器做限流,这里我们用C#语言来编写,且用特性(过滤器,拦截器)的形 ...

  2. JDBC-3(Transcation) ****

    3.1 异常的使用说明 在工具类中(JDBCUtils)的方法最好声明异常(throws),以便后续实现类中去捕获这些异常. 工具类中捕获异常通常没有意义 eg:实现类中connection建立过程出 ...

  3. AT4518-[AGC032C]Three Circuits【欧拉回路】

    正题 题目链接:https://www.luogu.com.cn/problem/AT4518 题目大意 给出\(n\)个点\(m\)条边的一张简单无向联通图,求能否把它分成三个可重复点的环. \(1 ...

  4. YbtOJ#763-攻城略池【线段树合并】

    正题 题目链接:http://www.ybtoj.com.cn/problem/763 题目大意 给出\(n\)个点的一棵树,每个\(d_i=0\)的点每秒会产生一个士兵往根节点走,走到一个节点让一个 ...

  5. Spring MVC面试复习整理

    Spring MVC Spring MVC 是Spring Framework 提供的 web 组件 它的实现基于 MVC 的设计模式:Model(模型层).View(视图层).Controller( ...

  6. BurpSuite 功能概览

    简介 写作思想:相比较具体介绍某个功能的用法.会更加侧重于介绍 Burp 提供哪些功能.这样好处是在比较复杂的测试场景,如果Burp 刚好提供对应的功能,就不用花费精力造轮子了. 而需要掌握具体操作方 ...

  7. Filter防火墙

    实验简介 实验属于防火墙系列 实验目的 了解个人防火墙的基本工作原理: 掌握Filter防火墙的配置. 实验环境 一台安装了win7操作系统的主机. 预备知识 防火墙 防火墙(Firewall)是一项 ...

  8. BIBD&SBIBD的矩阵题

    证明不存在 \(01\) 方阵 \(A\) 使得: \(A^TA=\begin{pmatrix}7&2&\dots &2\\2&7&\dots&2\\ ...

  9. 记一次 .NET 某招聘网后端服务 内存暴涨分析

    一:背景 1. 讲故事 前段时间有位朋友wx找到我,说他的程序存在内存阶段性暴涨,寻求如何解决,和朋友沟通下来,他的内存平时大概是5G 左右,在某些时点附近会暴涨到 10G+, 画个图大概就是这样. ...

  10. 题解 「ZJOI2018」历史

    题目传送门 Description 九条可怜是一个热爱阅读的女孩子. 这段时间,她看了一本非常有趣的小说,这本小说的架空世界引起了她的兴趣. 这个世界有 \(n\) 个城市,这 \(n\) 个城市被恰 ...