2014-11-24 115 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