失败场景的Cucumber屏幕截图和生成多个屏幕截图的扩展报告

失败场景的Cucumber屏幕截图和生成多个屏幕截图的扩展报告,cucumber,report,Cucumber,Report,我在处理cucumber和cucumber扩展报告时遇到以下问题。我使用的方法是,当场景中的一个步骤失败时截图,然后将截图嵌入到cucumber详细报告中。该功能工作正常,但当我只需要一个发生故障的页面截图时,它会生成多个截图。如果有人知道如何解决这个问题,你能解释一下吗。我会非常感激的 提前谢谢 这是我的pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/

我在处理cucumber和cucumber扩展报告时遇到以下问题。我使用的方法是,当场景中的一个步骤失败时截图,然后将截图嵌入到cucumber详细报告中。该功能工作正常,但当我只需要一个发生故障的页面截图时,它会生成多个截图。如果有人知道如何解决这个问题,你能解释一下吗。我会非常感激的

提前谢谢

这是我的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.moneris.automation</groupId>
    <artifactId>md01_automation_demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>merchant_direct</name>
    <profiles>
        <profile>
            <id>md_01_automation</id>
        </profile>
    </profiles>
    <dependencies>
        <!-- This is what I added for the extended report BEGIN -->
        <dependency>
            <groupId>com.github.mkolisnyk</groupId>
            <artifactId>cucumber-runner</artifactId>
            <version>1.3.3</version>
        </dependency>
        <dependency>
            <groupId>com.github.mkolisnyk</groupId>
            <artifactId>cucumber-reports</artifactId>
            <version>1.3.3</version>
            <type>pom</type>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.opencsv</groupId>
            <artifactId>opencsv</artifactId>
            <version>3.8</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-testng -->
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>1.2.5</version>
        </dependency>

        <dependency>
            <groupId>com.vimalselvam</groupId>
            <artifactId>cucumber-extentsreport</artifactId>
            <version>3.0.2</version>
        </dependency>
        <dependency>
            <groupId>com.relevantcodes</groupId>
            <artifactId>extentreports</artifactId>
            <version>2.41.2</version>
        </dependency>
        <dependency>
            <groupId>com.aventstack</groupId>
            <artifactId>extentreports</artifactId>
            <version>3.1.5</version>
        </dependency>

        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>1.2.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>1.2.5</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.sun</groupId>
            <artifactId>tools</artifactId>
            <version>1.7.0.13</version>
            <scope>system</scope>
            <systemPath>${env.JAVA_HOME}/lib/tools.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>gherkin</artifactId>
            <version>2.12.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.26-incubating</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.14.3</version>
            <scope>test</scope>
        </dependency>

        <!-- This is what I added for the extended report END -->

        <!-- <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-java</artifactId> 
            <version>1.2.4</version> <scope>test</scope> </dependency> -->

        <!-- <dependency> <groupId>info.cukes</groupId> <artifactId>cucumber-junit</artifactId> 
            <version>1.2.4</version> <scope>test</scope> </dependency> -->

        <!-- https://mvnrepository.com/artifact/info.cukes/cucumber-picocontainer -->
        <dependency>
            <groupId>info.cukes</groupId>
            <artifactId>cucumber-picocontainer</artifactId>
            <version>1.2.5</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.12.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.17</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-io -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!-- It needs this dependency to run TestNG from command line -->
        <dependency>
            <groupId>com.beust</groupId>
            <artifactId>jcommander</artifactId>
            <version>1.72</version>
        </dependency>

        <!-- To take the screenshots of the entire page -->
        <dependency>
            <groupId>ru.yandex.qatools.ashot</groupId>
            <artifactId>ashot</artifactId>
            <version>1.5.3</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.assertthat/selenium-shutterbug -->
        <dependency>
            <groupId>com.assertthat</groupId>
            <artifactId>selenium-shutterbug</artifactId>
            <version>0.7</version>
        </dependency>

        <!-- Library to compare two text files -->
        <dependency>
            <groupId>com.github.wumpz</groupId>
            <artifactId>diffutils</artifactId>
            <version>2.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.hp.gagawa/gagawa -->
        <dependency>
            <groupId>com.hp.gagawa</groupId>
            <artifactId>gagawa</artifactId>
            <version>1.0.1</version>
        </dependency>


    </dependencies>
    <build>
        <plugins>

            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <descriptor>src/test/resources/assembly.xml</descriptor>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>com.moneris.automation.main.Execute</mainClass>
                                </manifest>
                            </archive>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.3</version>
                <configuration>
                    <fork>true</fork>
                    <executable>C:\Program Files\Java\jdk1.8.0_171\bin\javac.exe</executable>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>
                    <includes>
                        <include>**/*TestRunner.java</include>
                    </includes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>2.20</version>
            </plugin>
            <plugin>
                <groupId>net.masterthought</groupId>
                <artifactId>maven-cucumber-reporting</artifactId>
                <version>2.0.0</version>
                <executions>
                    <execution>
                        <id>execution</id>
                        <phase>test</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <projectName>Merchant Direct</projectName>
                            <outputDirectory>${project.build.directory}/site/cucumber-reports</outputDirectory>
                            <cucumberOutput>${project.build.directory}/Extended-Report/cucumber.json</cucumberOutput>
                            <skippedFails>true</skippedFails>
                            <enableFlashCharts>true</enableFlashCharts>
                            <buildNumber>1</buildNumber>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
这是我用来拍摄失败截图的代码

@After
public void tearDown(Scenario scenario) {

        if (Drivers.getDriver() == null || Drivers.getDriver().toString().contains("(null)"))
            return;
        if (scenario.isFailed() || scenario.getStatus().equalsIgnoreCase("failed")) {
            final byte[] screenshot = ((TakesScreenshot) Drivers.getDriver()).getScreenshotAs(OutputType.BYTES);
            scenario.embed(screenshot, "image/png");

        }
    }

请您分享更多关于您的设置/配置的信息。Hi@SubOptimal!谢谢你的回复。我更新了我的问题,以显示我用来做报告的一些代码。如果您还需要什么,请告诉我。我会在
tearDown
方法中设置一个断点,查看为什么会调用三次。否则,对于一个不起作用的示例,很难说,因为您的代码片段包含一些我们不知道的自定义类。
@After
public void tearDown(Scenario scenario) {

        if (Drivers.getDriver() == null || Drivers.getDriver().toString().contains("(null)"))
            return;
        if (scenario.isFailed() || scenario.getStatus().equalsIgnoreCase("failed")) {
            final byte[] screenshot = ((TakesScreenshot) Drivers.getDriver()).getScreenshotAs(OutputType.BYTES);
            scenario.embed(screenshot, "image/png");

        }
    }