java - 黄瓜范围报告 - 如何将失败案例的屏幕截图添加到范围报告中
问题描述
对于 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());
}
}
解决方案
- 场景.embed 将屏幕截图添加到黄瓜默认报告中。
- 此链接将解决您将屏幕截图附加到范围报告的问题。
https://www.toolsqa.com/selenium-cucumber-framework/cucumber-extent-report/
推荐阅读
- api - Wikipedia API - 按部分搜索
- python - 如何在数据框行中找到最小的正整数
- react-native - 状态变量更新后反应原生视图无法刷新
- reactjs - React - 如何从函数更新道具
- wpf - 由于使用了 Dispatcher,窗口仍然锁定
- arrays - 给定一个输入字符串 S 和两个字符 c1 和 c2,您需要将给定字符串中出现的每个字符 c1 替换为字符 c2
- django - 根据 django 中的相关对象过滤查询集
- gremlin - 使用 gremlin 获取顶点和边缘
- python - 如何延迟gui更新?
- reactjs - Next/Image 从公共路径加载图像(路径是道具),而不是给组件宽度/高度