我正在使用testNG和Selenium运行一些测试。测试数据来自CSV文件。在每个步骤中,都可以截取页面的屏幕截图。我正在尝试将此屏幕截图添加到testNG HTML报告(可通过电子邮件发送的报告)。
我用它来添加img元素;
Reporter.log("<img src=\"file:///" + pathToScreen + "\" alt=\"\"/><br />");
现在这部分工作,因为它实际上是将它添加到报告中,如下面的屏幕截图所示。但HTML代码似乎不起作用。
图像文件的路径是错误的吗?我想是的,但我不确定如何解决这个问题。
更新: 这是来自HTML报告的源代码。显然它甚至没有将其解析为HTML ???
<div class="messages"><img src="file://C:\Users\myUSername\Desktop/screenshots/step 1_enter username_baseline.png" alt=""/></img></div>
答案 0 :(得分: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中,而不是在主索引页面中,其中包含失败的堆栈跟踪,这有点令人讨厌。但至少图像和链接正在发挥作用。
我编辑自己添加完整的解决方案,设置属性&#34; org.uncommons.reportng.escape-output&#34;因为我们传递的是html代码而不是文本。
我建议使用ReportNG,其中屏幕截图正确附加到测试失败并显示完整的堆栈跟踪:
答案 1 :(得分:1)
好吧,我正在查看错误的文件。我正在查看emailable-report.html,而reporter.log将所有内容发送到index.html。在index.html文件中,使用我的第一篇文章中的代码,一切正常。
答案 2 :(得分:0)
我注意到三重/开始时你没有关闭<img>
请尝试以下代码:
String pathToScreen = "C:\\User\\User123\\file.png";
String path = ("<img src=\"file://" + pathToScreen + "\" alt=\"\"/></img>");
Reporter.log(path);
答案 3 :(得分:0)
如果要将图像保存为文件(jpg / png等。)和base64格式,请尝试使用以下完整代码。
对于可通过电子邮件发送的报告,建议使用Base64格式。
File src = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
//Saving image to current working directory , you can ignore this step if dont want to save file
FileUtils.copyFile(src, new File("./demotest.png"));
String fileName = System.getProperty("user.dir") + "/demotest.png";
Reporter.setEscapeHtml(false); //This need to be set as false
byte[] fileContent = FileUtils.readFileToByteArray(new File(fileName));
String encodedString = Base64.getEncoder().encodeToString(fileContent);
String path = "<img src=\"data:image/png;base64, " + encodedString + "\" width=\"300\" height=\"350\" />";
Reporter.log(path);
或者如果您只想使用Base64文件格式,那么..
String src = ((TakesScreenshot)driver).getScreenshotAs(OutputType.BASE64);
String path = "<img src=\"data:image/png;base64, " + src + "\" width=\"300\" height=\"350\" />";
Reporter.log(path);
查看输出: