【问题标题】:How do I add a screenshot to an Allure report?如何将屏幕截图添加到 Allure 报告?
【发布时间】:2019-12-05 13:13:14
【问题描述】:

我有一个使用魅力报告的 Selenide+Java 项目。我正在使用 TestExecutionListener 来处理浏览器设置,但在弄清楚如何将屏幕截图添加到测试失败报告中时遇到了一些极端困难。

我正在使用

<dependency>
        <groupId>io.qameta.allure</groupId>
        <artifactId>allure-junit5</artifactId>
        <version>2.13.0</version>
        <scope>test</scope>
    </dependency>

在我的监听器代码中:

public class BrowserListener implements TestExecutionListener {

    Browser browser;

    @Override
    public void executionStarted(TestIdentifier testIdentifier) {
        if(testIdentifier.isTest()) {
            browser = new Browser();
            browser.openBrowser();
        }
    }

    @Override
    public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) {
            //code here to log failed execution - ideally would like to put screenshot on failure
            browser.close();
    }
}

如何使用 Selenide/Junit 5 在 Allure 报告中添加屏幕截图?

【问题讨论】:

    标签: junit5 allure selenide


    【解决方案1】:

    我设法通过添加以下内容来完成这项工作:

    import com.codeborne.selenide.Configuration;
    import com.codeborne.selenide.Selenide;
    import com.codeborne.selenide.WebDriverRunner;
    import org.apache.commons.io.FileUtils;
    import org.junit.platform.engine.TestExecutionResult;
    import org.junit.platform.launcher.TestExecutionListener;
    import org.junit.platform.launcher.TestIdentifier;
    import org.openqa.selenium.NoSuchSessionException;
    import org.openqa.selenium.OutputType;
    import org.openqa.selenium.TakesScreenshot;
    
    import java.io.File;
    import java.io.IOException;
    
    import static com.codeborne.selenide.Selenide.open;
    import static com.codeborne.selenide.WebDriverRunner.getSelenideDriver;
    import static io.qameta.allure.Allure.addAttachment;
    
    
    @Override
    public void executionFinished(TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) {
    if (testExecutionResult.getStatus().equals(TestExecutionResult.Status.FAILED)) {
            try {
                File screenshotAs = ((TakesScreenshot) getSelenideDriver().getWebDriver()).getScreenshotAs(OutputType.FILE);
                addAttachment("Screenshot", FileUtils.openInputStream(screenshotAs));
            } catch (IOException | NoSuchSessionException e) {
                // NO OP
            } finally {
                WebDriverRunner.getSelenideDriver().getWebDriver().quit();
            }
        }
    }
    

    【讨论】:

    • 效果很好!它应该被标记为最终解决方案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多