You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JUnit时Extent报告中为何显示空白截图?

问题

我用JUnit+Cucumber框架执行测试脚本,部署与运行都在VDI环境中完成。Apphooks中用于添加截图的代码如下:

@AfterStep
public void addScreenshot(Scenario scenario){
      final byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
      scenario.attach(screenshot, "image/png", "image"); 
}

我的extent.properties文件配置:

#extent.properties
extent.reporter.spark.start=true
extent.reporter.spark.out=target/MyReports/Spark.html

#Screenshot
screenshot.dir=target/MyReports/Screenshots/
screenshot.rel.path=../Screenshots/

#Adding folder name and non repeating pattern
basefolder.name=target/MyReports
basefolder.datetimepattern=d-MMM-YY HH-mm-ss

目前截图已在指定文件夹生成,默认命名为embedded1、embedded2等,但Extent报告中测试步骤下方仅显示空白小方框。我认为使用OutputType.BYTES无需指定路径,请问问题出在哪里?

排查与解决方案

1. VDI环境的屏幕捕获限制

VDI环境普遍存在屏幕捕获权限限制,即便代码能生成截图文件,实际捕获的字节流可能为空或损坏。可以先打印screenshot数组的长度,若长度为0,说明未捕获到有效截图。解决方式:联系VDI管理员开放屏幕捕获权限,或改用VDI允许的截图工具生成有效字节流。

2. Cucumber与Extent报告的集成逻辑冲突

你当前使用Cucumber原生的Scenario.attach()方法添加截图,但Extent报告可能需要通过自身API处理截图附件,而非依赖Cucumber的原生附件逻辑。可以尝试直接调用Extent的API附加截图:

// 需确保已正确初始化ExtentManager,能获取当前测试实例
ExtentTest currentTest = ExtentManager.getTest();
// 将字节流转为Base64后附加到报告
currentTest.addScreenCaptureFromBase64String(Base64.getEncoder().encodeToString(screenshot), "步骤截图");

3. 路径配置的冲突干扰

你的extent.properties中配置了screenshot.dir和screenshot.rel.path,但使用OutputType.BYTES时,Extent可能仍会尝试用这些路径关联截图,导致路径映射错误。可以先注释掉这两行配置,测试是否能正常显示:

# 临时注释路径配置
#screenshot.dir=target/MyReports/Screenshots/
#screenshot.rel.path=../Screenshots/

使用字节流时无需提前指定存储路径,Extent会自行处理附件的存储与关联。

4. 截图字节流的格式损坏

VDI环境生成的截图字节流可能不符合标准PNG格式,即便你指定了image/png,实际字节流仍可能异常。可以将字节流写入本地文件,手动打开验证是否正常:

// 先保存为文件再读取字节流,避免直接捕获的字节流损坏
File screenshotFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
byte[] screenshot = Files.readAllBytes(screenshotFile.toPath());
scenario.attach(screenshot, "image/png", "image");

内容的提问来源于stack exchange,提问作者Jagruuti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:40:32