Html 向TestNG添加屏幕截图

Html 向TestNG添加屏幕截图,html,selenium,testng,Html,Selenium,Testng,我正在使用testNG和Selenium运行一些测试。测试数据来自CSV文件。在每个步骤中,都可以截取页面的屏幕截图。我正在尝试将此屏幕截图添加到testNG HTML报告(可通过电子邮件发送的报告) 我用它来添加img元素 Reporter.log("<img src=\"file:///" + pathToScreen + "\" alt=\"\"/><br />"); Reporter.log(); 现在这部分起作用了,因为它实际上是在将其添加到报告中,如下面的

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

我用它来添加img元素

Reporter.log("<img src=\"file:///" + pathToScreen + "\" alt=\"\"/><br />");
Reporter.log(
);
现在这部分起作用了,因为它实际上是在将其添加到报告中,如下面的屏幕截图所示。但是HTML代码似乎不起作用

图像文件的路径是否错误?我想是的,但我不确定如何解决这个问题

更新: 这来自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>
img src=“file://C:\Users\myUSername\Desktop/screenshots/step 1\u enter username\u baseline.png”alt=”“//img

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

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

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

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

要将屏幕截图嵌入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>");
System.setProperty(“org.uncommons.reportng.escape output”,“false”);
Reporter.log(
"");
在这种情况下,屏幕截图显示在OutputReport中,而不是在主索引页面中,其中包含失败的stacktrace,这有点不正常。但至少图像和链接是有效的

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

我建议在屏幕截图与完整堆栈跟踪正确连接到测试失败的情况下使用Reporting:


为了将屏幕截图嵌入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>");
System.setProperty(“org.uncommons.reportng.escape output”,“false”);
Reporter.log(
"");
在这种情况下,屏幕截图显示在OutputReport中,而不是在主索引页面中,其中包含失败的stacktrace,这有点不正常。但至少图像和链接是有效的

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

我建议在屏幕截图与完整堆栈跟踪正确连接到测试失败的情况下使用Reporting:


为了将屏幕截图嵌入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>");
System.setProperty(“org.uncommons.reportng.escape output”,“false”);
Reporter.log(
"");
在这种情况下,屏幕截图显示在OutputReport中,而不是在主索引页面中,其中包含失败的stacktrace,这有点不正常。但至少图像和链接是有效的

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

我建议在屏幕截图与完整堆栈跟踪正确连接到测试失败的情况下使用Reporting:


为了将屏幕截图嵌入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>");
System.setProperty(“org.uncommons.reportng.escape output”,“false”);
Reporter.log(
"");
在这种情况下,屏幕截图显示在OutputReport中,而不是在主索引页面中,其中包含失败的stacktrace,这有点不正常。但至少图像和链接是有效的

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

我建议在屏幕截图与完整堆栈跟踪正确连接到测试失败的情况下使用Reporting:


如果您想将图像同时保存为文件(jpg/png等)和base64格式,请尝试下面的完整代码

对于可通过电子邮件发送的报告,建议使用Base64格式

File src=((TakesScreenshot)driver.getScreenshotAs(OutputType.File);
//将图像保存到当前工作目录,如果不想保存文件,可以忽略此步骤
copyFile(src,新文件(“./demost.png”);
字符串文件名=System.getProperty(“user.dir”)+“/demost.png”;
记者:setEscapeHtml(假)//这需要设置为false
byte[]fileContent=FileUtils.readFileToByteArray(新文件(文件名));
字符串encodedString=Base64.getEncoder().encodeToString(fileContent);
字符串路径=”;
Reporter.log(path);
或者,如果您只需要Base64文件格式,则

String src=((TakesScreenshot)driver).getScreenshotAs(OutputType.BASE64);
字符串路径=”;
Reporter.log(path);
见输出:


如果您想将图像同时保存为文件(jpg/png等)和base64格式,请尝试下面的完整代码

对于可通过电子邮件发送的报告,建议使用Base64格式

File src=((TakesScreenshot)driver.getScreenshotAs(OutputType.File);
//将图像保存到当前工作目录,如果不想保存文件,可以忽略此步骤
copyFile(src,新文件(“./demost.png”);
字符串文件名=System.getProperty(“user.dir”)+“/demost.png”;
记者:setEscapeHtml(假)//这必须是正确的