Да, вы можете включить ссылку на свой скриншот в отчете тестирования.
Вам нужно вызвать метод org.testng.Reporter.log
, чтобы записать гиперссылку на отчет testng , либо добавив аннотацию к вашему классу тестирования или к родительскому классу всех классов тестирования с помощью @Listeners ({yourListener.class}), либодобавив слушателя к вашему testng.xml
.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="default">
<listeners>
<listener class-name="ScreenshotListener" />
</listeners>
<test name="Test">
<packages>
<package name="someTests.*"/>
</packages>
</test>
</suite>
Сначала вам нужно создать класс Listener и добавить его в testng.Вы можете получить подробную информацию об этом на testng.org.Поиск слушателя.
Как только вы создадите этот класс, вы должны написать в нем метод, который переопределяет метод ontestfailure
.Код внутри этого метода будет выполняться всякий раз, когда testng идентифицирует ошибку.
Вы можете вызвать метод захвата скриншота и использовать Reporter.log
, чтобы добавить гиперссылку на этот скриншот.Тогда вы можете найти эту ссылку под подробностями неудачных тестов.
import java.io.*;
import java.util.*;
import java.text.*;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.*;
import org.testng.*;
public class ScreenshotListener extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult result) {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat formater = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss");
String methodName = result.getName();
if(!result.isSuccess()){
File scrFile = ((TakesScreenshot)SomeStaticWebDriver.driver).getScreenshotAs(OutputType.FILE);
try {
String reportDirectory = new File(System.getProperty("user.dir")).getAbsolutePath() + "/target/surefire-reports";
File destFile = new File((String) reportDirectory+"/failure_screenshots/"+methodName+"_"+formater.format(calendar.getTime())+".png");
FileUtils.copyFile(scrFile, destFile);
Reporter.log("<a href='"+ destFile.getAbsolutePath() + "'> <img src='"+ destFile.getAbsolutePath() + "' height='100' width='100'/> </a>");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}