关于java selenium allure报告截图支持

方法1:写监听器继承TestListenerAdapter

package cn.*****.www.listener;

import cn.*****.www.common.BaseDriver;
import com.google.common.io.Files;
import io.qameta.allure.Attachment;
import org.apache.log4j.Logger;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;

import java.io.File;
import java.io.IOException;

public class WebAutoListener extends TestListenerAdapter {
    private Logger logger = Logger.getLogger(WebAutoListener.class);
    @Override
    public void onTestFailure(ITestResult tr) {
        logger.info("进入截图方法");
        String methodName = tr.getMethod().getMethodName() + System.currentTimeMillis();
        TakesScreenshot driver=(TakesScreenshot)BaseDriver.driver;
        File screenFile = driver.getScreenshotAs(OutputType.FILE);
        takePhoto(methodName,driver);
        try {
            Files.copy(screenFile, new File("src/main/resources/screen/"+methodName+".jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Attachment(value = "Failure in method {0}"+"失败截图如下:",type = "image/png")
    public byte[]  takePhoto(String methodName ,TakesScreenshot driver){
        byte[] screenshotAs = driver.getScreenshotAs(OutputType.BYTES);
        return screenshotAs;
    }
}

@Attachment 以及takePhoto函数将失败截图发送至allure报告

需要配置testNg.xml,此配置保证运行testNg.xml生效

<listeners>
        <listener class-name="cn.****.www.listener.WebAutoListener" />
    </listeners>

pom.xml,此配置保证调用maven clean test等命令行时生效

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
                <configuration>
                    <argLine>
                        -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                    </argLine>
                    <properties>
                        <property>
                            <name>listener</name>
                            <value>cn.****.www.listener.WebAutoListener</value>
                        </property>
                    </properties>
                    <suiteXmlFiles>
                        <!--此处在jenkins 调用mvn test执行时,选取执行的文件,可以为多个suiteXmlFiles,根路径为当前项目名-->
                        <suiteXmlFile>testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.aspectj</groupId>
                        <artifactId>aspectjweaver</artifactId>
                        <version>${aspectj.version}</version>
                    </dependency>
                </dependencies>
            </plugin>

 

方法2:写监听器实现IHookable接口

// TODO

两种方法都需要注解返回byte[]类型文件递交给allure

posted @ 2020-01-07 18:45  L-robot  阅读(667)  评论(0)    收藏  举报