关于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

浙公网安备 33010602011771号