无法将屏幕截图嵌入到 SpecFlow html 报表中



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

我想将自定义图像嵌入到 SpecFlow 生成的 HTML 报告中。该图像是我在 Hooks 中出现故障时拍摄的屏幕截图。

请帮帮我。

这是我在 html 报告中看到的 - 在此处输入图像描述

请在此处查看SeleniumWebTest示例项目。此示例项目演示如何在报表中包含屏幕截图。虽然该示例是基于硒的,但相同的原则适用于其他框架。

有关其工作原理的更深入说明,请参阅此处的"包括屏幕截图"。从本质上讲,您需要滥用控制台并使用它来输出图像的文件路径。

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

编辑:此后我发现示例项目中的模板似乎存在问题。模板中的以下部分被窃听: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>标记将路径括起来。您还需要在文件路径两边添加引号。

最新更新