2012-06-20 29 views
6

Tôi đang tìm cách đính kèm ảnh chụp màn hình vào phần Kết quả của Báo cáo TestNG cho các phương pháp không thành công.Đính kèm ảnh chụp màn hình vào TestNG Các phương pháp không thành công

Cho đến nay tôi đã có thể tùy viên ảnh chụp màn hình của tôi để Reporter Output bằng cách thực hiện này:

Reporter.log("<br> <img src=.\\screenshots\\" + fileName + " /> <br>");

nhưng vẫn phải vật lộn với bổ sung chúng vào kết quả kiểm tra phần các phương pháp thất bại.

tôi đã có thể thực hiện Listener và đánh chặn onTestFailure hành động mà ban đầu được đề xuất ở đây: How can I include a failure screenshot to the testNG report

Dưới đây là một ví dụ về điều đó:

@Override 
public void onTestFailure(ITestResult result) { 
    Reporter.setCurrentTestResult(result); 
    Reporter.log("<br> <img src=.\\screenshots\\Untitled.png /> <br>"); 
    Reporter.setCurrentTestResult(null); 
} 

Nhưng Reporter.log chức năng vẫn đẩy thông tin của tôi trong Nhật ký đầu ra của Trình báo cáo nhưng không có trong phương thức Kết quả-> Không thành công-> Nhật ký phương thức không thành công.

Cập nhật (03/14/14): Tôi đã đính kèm ảnh chụp màn hình để làm rõ câu hỏi của mình. Sự cố không nằm trong ảnh chụp màn hình và đính kèm ảnh vào Báo cáo. Phần đó hoạt động tốt. Vấn đề là ảnh chụp màn hình được gắn vào phần Kiểm tra đầu ra của báo cáo nhưng tôi muốn xem nó trong Kết quả -> Phương thức không thành công.

enter image description here

Trả lời

0

Tôi cũng đã triển khai cùng mở rộng TestNG TestListenerAdapter. Bằng cách chụp ảnh màn hình, sau đó đính kèm nó vào Báo cáo Testng với hình ảnh có chiều cao kích thước = 100 và chiều rộng = 100 với onTestFailure. Xin vui lòng xem bên dưới nếu điều này giúp giải quyết vấn đề của bạn

File scrFile = ((TakesScreenshot) WebdriverManager.globalDriverInstance).getScreenshotAs(OutputType.FILE); 
     //Needs Commons IO library 
     try { 
     FileUtils.copyFile(scrFile, new File(file.getAbsolutePath()+ "/selenium-reports/html/" + result.getName() + ".jpg")); 
     Reporter.log("<a href='"+ file.getAbsolutePath()+"/selenium-reports/html/" + result.getName() + ".jpg'> <img src='"+ file.getAbsolutePath()+"/selenium-reports/html/"+ result.getName() + ".jpg' height='100' width='100'/> </a>"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    Reporter.setCurrentTestResult(null); 
+0

Hi Satish, cảm ơn bạn đã trả lời của bạn nhưng tôi đoán tôi đang hỏi một câu hỏi khác. Tôi đã sửa đổi nhận xét ban đầu của mình để làm rõ vấn đề của tôi. – Vlad

0

Ngoài trên không quên thêm dòng sau vào bộ xml testng bạn

<listeners> 
    <listener class-name="com.tests.DotTestListener" /> 
</listeners> 

HOẶC

đi qua như listner tham số nếu bạn đang thực hiện nó từ dòng lệnh

java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -listener com.tests.DotTestListener test\testng.xml 

Tham chiếu: http://testng.org/doc/documentation-main.html#logging-listeners

+0

Cảm ơn bạn đã trả lời Kamal. Tôi đã sửa đổi câu hỏi của mình với nhiều chi tiết và ảnh chụp màn hình hơn để minh họa sự cố của tôi. – Vlad

0

Tôi đã gặp sự cố tương tự nhưng nó đã được giải quyết. Bằng cách thực hiện SuitePanel bạn sẽ có thể để thêm ảnh chụp màn hình như bạn muốn https://github.com/cbeust/testng/blob/master/src/main/java/org/testng/reporters/jq/SuitePanel.java

Tôi gần như không thay đổi mã gốc trừ

... 
// Description? 
String description = tr.getMethod().getDescription(); 
if (! Strings.isNullOrEmpty(description)) { 
    xsb.push("em"); 
    xsb.addString("(" + description + ")"); 
    xsb.pop("em"); 
} 
// Add screen shot here 
xsb.push(“img”,”src”,imagePath); 
xsb.pop(“img”); 

xsb.pop(D); 
xsb.pop(D); 
0

Nếu bạn muốn hiển thị ảnh chụp màn hình vào phương pháp thất bại sau đó bạn sẽ phải nắm bắt ngoại lệ và sửa đổi nội dung tin nhắn của nó và thêm img html vào đó và sau đó nó sẽ xuất hiện. Hãy cho tôi biết nếu bạn cần ví dụ

0

Tôi đã gặp vấn đề tương tự nhưng đã được khắc phục ngay bây giờ. Tôi đã thực hiện một phương pháp để chụp ảnh màn hình trong lớp cơ sở. phương thức này trả về đường dẫn đầy đủ của ảnh chụp màn hình.

public String getScreenshot (String screenshotName, WebDriver driver) throws IOException{ 
    DateFormat dateformate = new SimpleDateFormat("dd-mm-yy-hh-mm-ss"); 
    Date date = new Date(); 
    String currentdate = dateformate.format(date); 
    String imageName =screenshotName+currentdate; 
    TakesScreenshot ts=(TakesScreenshot)driver; 
    File source=ts.getScreenshotAs(OutputType.FILE); 
    String location =System.getProperty("user.dir")+"\\testOutput\\screenshot\\"+imageName+".png"; 
    File screenshotLocation =new File (location); 
    FileUtils.copyFile(source, screenshotLocation); 
    return location; 

} 

Thêm sử dụng con đường này để thêm ảnh chụp màn hình trong báo cáo testng cũng như log báo cáo bằng cách cập nhật testng TestNgListener-

public void onTestFailure(ITestResult arg0) { 
    Object currentClass = arg0.getInstance(); 
    WebDriver driver = ((BrowserSetup) currentClass).getDriver(); 
    String name = arg0.getName(); 
    System.out.println(name); 
    try { 
     String screenshotPath =getScreenshot(name, driver); 
     System.out.println("Screenshot taken"); 
     String path = "<img src=\"file://" + screenshotPath + "\" alt=\"\"/>"; 
     System.out.println(screenshotPath+" and path - "+path); 
     Reporter.log("Capcher screenshot path is "+path); 
    } catch (Exception e) { 
     System.out.println("Exception while takescreenshot "+e.getMessage()); 
    } 
    printTestResults(arg0); 

} 

enter image description here

Các vấn đề liên quan