首页 > 解决方案 > 黄瓜范围报告 - 如何将失败案例的屏幕截图添加到范围报告中

问题描述

对于 Cucumber (Java) 中的报告范围内的失败案例的屏幕截图,我没有找到解决方案。我在 Stack Overflow 的其他地方看过。任何人都可以帮我解决问题吗?文件pom.xml发布我对 Cucumber 报告的依赖项

<dependency>
    <groupId>com.relevantcodes</groupId>
    <artifactId>extentreports</artifactId>
    <version>2.41.2</version>
</dependency>
<dependency>
 <groupId>com.vimalselvam</groupId>
 <artifactId>cucumber-extentsreport</artifactId>
 <version>3.0.2</version>
</dependency>
<dependency>
    <groupId>com.aventstack</groupId>
    <artifactId>extentreports</artifactId>
    <version>3.1.2</version>
</dependency>
<dependency>
    <groupId>com.aventstack</groupId>
    <artifactId>extentreports-cucumber4-adapter</artifactId>
    <version>1.0.6</version>
</dependency>

/*runner 类 */ 插件和运行方法

     plugin = {"com.cucumber.listener.ExtentCucumberFormatter:target/cucumber-reports/report.html"}

public class testRunner{
    @AfterClass
     public static void writeExtentReport() {
         Reporter.loadXMLConfig(new File("C:\\Users\\User\\eclipseworkspace\\test\\extent-config.xml"));    
}

/* 步骤类 */

  @After
        public void execute_after_every_scenario(Scenario scenario) throws InterruptedException, IOException
        {
            testbase.teardown(scenario);
        }

/* 测试基类 */ 有效的是保存在输出文件夹 中的屏幕截图 缺少的是范围报告中的屏幕截图

public static void teardown(Scenario scenario) throws InterruptedException, IOException
    {
        Thread.sleep(2000);
        if (scenario.isFailed()) {
               try {
                   String screenshotName = scenario.getName().replaceAll(" ", "_"); 
                   byte[] screenshot = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BYTES);
                File screenshot_with_scenario_name = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); 
              //  FileUtils.copyFile(screenshot_with_scenario_name, new File("C:\\Users\\User\\eclipse-workspace\\test\\testscreenshots\\" + screenshotName + ".png"));
              
                System.out.println("testing pring the screenshot" + screenshotName);              

              File destinationPath = new File("C:\\Users\\User\\eclipse-workspace\\test\\testscreenshots\\" + screenshotName + ".png");
                  
     //Copy taken screenshot from source location to destination location
                Files.copy(screenshot_with_scenario_name.toPath(), destinationPath.toPath()); 

            Reporter.addScreenCaptureFromPath(destinationPath.toString());
                Reporter.addScenarioLog(screenshotName);
                
                scenario.embed(screenshot, "image/png");
       
               } catch (IOException somePlatformsDontSupportScreenshots) {
                System.err.println(somePlatformsDontSupportScreenshots.getMessage());
           }  
              }

标签: javaseleniumcucumberextentreports

解决方案


  1. 场景.embed 将屏幕截图添加到黄瓜默认报告中。
  2. 此链接将解决您将屏幕截图附加到范围报告的问题。

https://www.toolsqa.com/selenium-cucumber-framework/cucumber-extent-report/


推荐阅读