2017-05-19 63 views

回答

1

看看在SeleniumWebTest示例項目here。此示例項目顯示瞭如何在報告中包含屏幕截圖。雖然該示例是基於Selenium的,但其他框架也適用相同的原則。

在「包含屏幕截圖」下,可以找到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>

由於控制檯不再格式化文件作爲超鏈接,您只需要更換填充(在這種情況下,「屏幕截圖[]屏幕截圖「),而是用<IMG>標籤封裝路徑。您還需要在文件路徑中添加引號。

+0

感謝您的回覆。我完全按照SeleniumWebTest項目中提到的方式進行。但仍面臨同樣的問題。 - > AfterScenarioHook代碼 - Console.WriteLine($「SCREENSHOT [file:/// {tempFileName}] SCREENSHOT」); - >生成的HTML報告爲 - file:/// C:/ Users/xxxxx/Documents/Visual Studio 2015_Backup/Projects/MyProject.Specs/TestResults/tmp366D.jpg –

+0

另外我僅使用SpecFlow,SpecRun。 它僅在付費版中可用嗎? –

+0

是的,擴展報告功能僅在SpecFlow + Runner中可用,不在SpecFlow的開放源代碼版本中。 –