2012-06-20 3 views
6

Я ищу способ приложить скриншот к разделу результатов TestNG Report для неудавшихся методов.Присоединение скриншотов к TestNG Результаты неудачных методов

До сих пор я был в состоянии атташе мои скриншоты Reporter Вывод по реализации этого:

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

, но до сих пор борется с добавлением их к результатам тестов раздел неудачных методов.

я смог реализовать слушателем и перехватывать onTestFailure действия, которые первоначально были предложены здесь: How can I include a failure screenshot to the testNG report

Вот пример того, что:

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

Но Reporter.log функция по-прежнему толкает мою информацию в журнал журнала репортера, но не в методах Results-> Failed-> Failed method log.

Обновление (03/14/14): Я добавил скриншот, чтобы уточнить мой вопрос. Проблема заключается не в том, чтобы снять снимок экрана и привязать его к Report. Эта часть отлично работает. Проблема в том, что скриншот прикреплен к части тестового вывода отчета, но я хочу увидеть его в результатах -> Неудачные методы.

enter image description here

ответ

0

Я также реализован тот же простирающийся TestNG TestListenerAdapter. Захватив снимок экрана, прикрепите его к отчету Testng с изображением размера height = 100 и width = 100 с onTestFailure. Пожалуйста, смотрите ниже, если это поможет решить вашу проблему

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

Привет, Сатиш, спасибо за ваш ответ, но я думаю, что задал другой вопрос. Я изменил свой первоначальный комментарий, чтобы уточнить мою проблему. – Vlad

0

В дополнение к выше, не забудьте добавить следующие строки в TestNG ванной XML

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

ИЛИ

переходящее в у слушателя параметр, если вы выполняете его из командной строки

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

Код: http://testng.org/doc/documentation-main.html#logging-listeners

+0

Спасибо за ответ Kamal. Я изменил свой вопрос более подробно и скриншотом, чтобы проиллюстрировать мою проблему. – Vlad

0

У меня была такая же проблема, но она была решена. Реализуя SuitePanel вы сможете добавить скриншот, как вы хотите https://github.com/cbeust/testng/blob/master/src/main/java/org/testng/reporters/jq/SuitePanel.java

Я почти не меняют исходный код, за исключением

... 
// 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

Если вы хотите, чтобы показать снимок экрана на несостоявшегося метод, то вам должен будет зафиксировать исключение и изменить его содержимое сообщения и добавить к нему img html, а затем он появится. Дайте мне знать, если вам нужен пример

0

У меня была такая же проблема, но теперь она исправлена. Я сделал метод для скриншота в базовом классе. этот метод возвращает полный путь скриншота.

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; 

} 

Добавить использовать этот путь, чтобы добавить скриншот в отчете TestNG, а также отчета об обновив 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