Как добавить скриншот в отчет о степени для пройденных тестовых случаев в Selenium cucumber framework

#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");
}