#selenium #cucumber #extentreports #selenium-extent-report
#селен #огурец #расширенные отчеты #селен-экстент-отчет #extentreports #selenium-extent-report
Вопрос:
Как добавить скриншот в отчет об экстенте для пройденных тестовых случаев в Selenium cucumber framework.
@After(order = 1)
public void after(Scenario scenario) throws IOException {
TransferFiles files = new TransferFiles();
String buildPath;
String finalFile;
if (scenario.isFailed()) {
String screenshotName = scenario.getName().replaceAll(" ", "_") "_" String.valueOf(random);
try {
//This takes a screenshot from the driver at save it to the specified location
File sourcePath = (((TakesScreenshot) TestBase.driver).getScreenshotAs(OutputType.FILE));
File fileTempImg = new File("C:\ScreenShot0011\001temp001.png");
FileUtils.copyFile(sourcePath, fileTempImg);
InetAddress addr;
addr = InetAddress.getLocalHost();
buildPath = String.valueOf(fileTempImg).replaceAll("C:", addr.getHostName());
finalFile = "//" buildPath.replaceAll("\\", "/");
//finalFile = "\\" buildPath;
files.transferFiles(finalFile, screenshotName, "png");
//This attach the specified screenshot to the test
addScreenCaptureFromPath("path/" screenshotName ".png");
fileTempImg.delete();
} catch (Exception e) {
System.out.println("The specified file have not been found on the local machine:-" e.getMessage());
}
}
Комментарии:
1. Пожалуйста, опишите, что вы пробовали.
Ответ №1:
Используя аннотацию @After, вы сможете вставлять снимок экрана в свой отчет об экстенте.Вы можете заблокировать if else. Один блок для неудачного теста и другой для пройденного тестового примера, и здесь вы пишете код для встраивания снимка экрана в отчет.
@After
public void afterScenario(Scenario scenario){
try{
if(scenario.isFailed()){
// More code goes here.
}else {
//------------------------- Attaching Screen shot in the Report -------------------------
byte[] screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES);
scenario.embed(screenshot, "image/png");
}
ExtentManager.getReporter().flush();
}
catch(Exception e){
scenario.write("WARNING. Failed to take screenshot with following exception : " e.getMessage());
}
}
Ответ №2:
Используйте хук @After и вставьте скриншот в отчет cucumber.
@After(order = 0)
public void onScenarioFinished()
{
byte[] bytes = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES)
scenario.embed(driver.getScreenShotRaw(), "image/png");
}