Selenium 如何将屏幕截图附加到失败的步骤?

Selenium 如何将屏幕截图附加到失败的步骤?,selenium,cucumber,hook,extentreports,selenium-extent-report,Selenium,Cucumber,Hook,Extentreports,Selenium Extent Report,我正在编写扩展报告,我想将屏幕截图附加到失败的步骤,而不是最后一步。我在@After hook中使用了下面的代码,但是它将屏幕截图附加到最后一步,而不是失败的步骤。我尝试将@After钩子更改为@After钩子,但该钩子下的代码甚至无法执行 这个钩子是在包配置中定义的,我已将该包包含在胶水中,如下所述: glue = {"stepDefinitions", "configuration"} 用于附加快照的代码: import cucumber.api.java.After; @After()

我正在编写扩展报告,我想将屏幕截图附加到失败的步骤,而不是最后一步。我在@After hook中使用了下面的代码,但是它将屏幕截图附加到最后一步,而不是失败的步骤。我尝试将@After钩子更改为@After钩子,但该钩子下的代码甚至无法执行

这个钩子是在包配置中定义的,我已将该包包含在胶水中,如下所述:

glue = {"stepDefinitions", "configuration"}
用于附加快照的代码:

import cucumber.api.java.After;

@After()
     public void afterScenario(Scenario scenario) {
          WebDriver driver1 = BaseConfig.setDriver();
          System.out.println("after step");
         if (scenario.isFailed()) {
             System.out.println("scenario failed");
         String screenshotName = scenario.getName().replaceAll(" ", "_");
         System.out.println(screenshotName);
         try {

             File sourcePath = ((TakesScreenshot) driver1).getScreenshotAs(OutputType.FILE);
             System.out.println(sourcePath);
             File destinationPath = new File(System.getProperty("user.dir") + "/target/cucumber-reports/" + screenshotName + ".png");
             System.out.println(destinationPath);

             Files.copy(sourcePath, destinationPath);   
             destinationPath = new File("./" + screenshotName + ".png");

             Reporter.addScreenCaptureFromPath(destinationPath.toString());


         } catch (IOException e) {
         } 
         }
         }
部门:

   <dependency>
        <groupId>com.aventstack</groupId>
        <artifactId>extentreports</artifactId>
        <version>4.0.9</version>
    </dependency>

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-jvm</artifactId>
        <version>4.4.0</version>
        <type>pom</type>
    </dependency>

com.aventstack
扩展端口
4.0.9
黄瓜
黄瓜
4.4.0
聚甲醛

您使用的cucumber&extent reports的版本是什么?更新了问题陈述如果您最近升级到C4,那么我建议使用cucumber extent report adapter-请参阅此处的文档-我在收到您的电子邮件后查看了它,但我不确定这是否有助于我阅读cucumber hook的代码。这里我关心的是不能在afterStep hook中调用代码。afterStep不能在全局hook级别工作。全局钩子只能将场景作为参数。这意味着屏幕截图将附加到场景,而不是实际步骤。如果需要附加到步骤级别,则必须创建一个扩展此适配器的reporter类,并在方法上使用注释@AfterStep来捕获和附加屏幕截图。我已经成功地做到了这一点。