无法将屏幕截图嵌入 SpecFlow html 报告

Unable to embed a screenshot to the SpecFlow html Report

我正在使用 SpecFlow 和 Visual Studio 执行我的自动化场景。

我想将自定义图像嵌入到由 SpecFlow 生成的 HTML 报告中。该图像是我在 Hooks 场景失败时截取的屏幕截图。

请帮帮我。

这就是我在 html 报告中看到的内容 - enter image description here

看看 SeleniumWebTest 示例项目 here。此示例项目展示了如何在报告中包含屏幕截图。虽然该示例是基于 Selenium 的,但相同的原则适用于其他框架。

可以在 "Including Screenshots" 下的 here 中找到有关其工作原理的更深入的解释。本质上,您需要滥用控制台并使用它来输出图像的文件路径。

任何写入控制台的数据都可以在您的报告中使用(这是报告接收跟踪详细信息的方式)。您将需要解析写入控制台的数据并删除要嵌入的文件路径。确保完全去除图像路径,这样就不会将文件路径输出为从控制台收到的其他跟踪信息的一部分。

编辑: 后来我发现示例项目中的模板似乎有问题。模板中的以下部分存在错误: class="log">@Raw(FormatTechMessages(traceEvent.TechMessages.TrimEnd()).Replace("SCREENSHOT[ <a href="http://specflow.org/plus/documentation/,-/" data-page=",-"<img width='1000' src=").Replace("</a> ]SCREENSHOT", "</img>"))</pre>

这是因为控制台似乎不再将文件格式化为超链接,因此永远找不到替换字符串。在 ReportTemplate.cshtml 中更新这一行似乎已经成功: <pre class="log">@Raw(FormatTechMessages(traceEvent.TechMessages.TrimEnd()).Replace("SCREENSHOT[ ", "<img width='1000' src=\"").Replace(" ]SCREENSHOT", "\"</img>"))</pre>

由于控制台不再将文件格式化为超链接,您只需替换字符串中的填充(在本例中为 "SCREENSHOT[]SCREENSHOT"),并将路径包含在 <IMG> 标签。您还需要在文件路径周围添加引号。