2014-11-24 134 views
0

我正在使用testNG和Selen进行一些测试。测试数据来自CSV文件。在每一步中都可以截取页面的截图。我正在尝试将此屏幕截图添加到testNG HTML报告(电子邮件报告)。将屏幕截图添加到TestNG

我正在使用它来添加img元素;

Reporter.log("<img src=\"file:///" + pathToScreen + "\" alt=\"\"/><br />"); 

现在这部分工作,因为它实际上是将此添加到报告中,您可以在下面的屏幕截图中看到。但是HTML代码似乎不起作用。

enter image description here

是路径到映像文件错了吗?我认为是这样,但我不知道如何解决这个问题。

更新: 这是从HTML报告的源代码。显然它甚至不解析为HTML?

<div class="messages">&lt;img src=&quot;file://C:\Users\myUSername\Desktop/screenshots/step 1_enter username_baseline.png&quot; alt=&quot;&quot;/&gt;&lt;/img&gt;</div> 

回答

1

好apparantly我一直在寻找在错误的文件。我正在查看emailable-report.html,而reporter.log将所有内容发送到index.html。在index.html文件中,使用第一篇文章中的代码,一切正常。

+0

它实际上是由于报告中的html转义而发生的。所以,如果有日志消息中的html代码可能会被转义。在报告的情况下,您可以调用index.html,它可以通过“Reporter.setEscapeHtml”方法处理;但该标志不会影响emailable-report,并且邮件中的html将被转义。 – user1058106 2014-11-24 14:31:09

0

我注意到三重/在开始和你没有关闭<img>

尝试下面的代码:

String pathToScreen = "C:\\User\\User123\\file.png"; 
String path = ("<img src=\"file://" + pathToScreen + "\" alt=\"\"/></img>"); 
Reporter.log(path); 
+0

仍然没有显示的屏幕截图。另外,我认为它不会将代码解析为html。这是源代码; ​​ – Student 2014-11-24 08:58:44

+0

是的,我看到了问题。 Reporter.log将信息作为字符串发送到您的报告,但您需要做的是将变量“路径”放入index.html的源代码中,我真的不知道该怎么做。 – 2014-11-24 09:23:24

2

要具有嵌入在index.html的报告的屏幕截图我使用相对路径为:

System.setProperty("org.uncommons.reportng.escape-output", "false"); 

Reporter.log(
"<a title= \"title\" href=\"../path/from/target/" + fileName + "\">" + 
    "<img width=\"418\" height=\"240\" alt=\"alternativeName\" title=\"title\" src=\"../surefire-reports/html/screenShots/"+fileName+"\"> 
</a>"); 

在这种情况下,该屏幕截图显示在OutputReport不与的栈跟踪主索引页失败,这有点烦人。但至少图像和链接正在工作。

我编辑自己以添加完整的解决方案,将属性“org.uncommons.reportng.escape-output”设置为false,我们正在传递html代码而不是文本。

我建议使用ReportNG其中截图被正确地连接到测试失败与完整堆栈跟踪:

enter image description here