2016-09-23 3 views
0

Es gibt typische Lösungen für die Aufnahme von Screenshot, während @Test fehlgeschlagen, aber ist es möglich, dass auf @Before/AfterClass/Method scheitern?TestNG Ist es möglich, einen Screenshot auf @BeforeMethod zu erstellen, fehlgeschlagen?

Warum brauche ich das? - Es wird gut sein, vor allem für @BeforeMethod, wo ich gemeinsame Logik für Test-Klasse - Login verwenden und auf bestimmte Seite gehen.

+0

enthalten haben Sie 'Itestresult' wie diese zu benutzen versucht,' @AfterMethod \t public void takeScreenShotOnFailure (ITestResult Testergebnis) throws IOException { \t \t if (testResult.getStatus() == ITestResult.FAILURE) { \t \t \t System.out.println (testResult.getStatus()); \t \t \t Datei scrFile = ((TakesScreenshot) Treiber) .getScreenshotAs (OutputType.FILE); \t \t \t FileUtils.copyFile (scrFile, neue Datei ("D: \\ testScreenShot.jpg")); \t} \t} 'Sie können das gleiche für @BeforeMethod – user1207289

Antwort

1

Sie möchten und implementieren WebDriverEventListener in Ihrem Fall versuchen Sie onException in Methode interessiert sein, die Sie smthn auf jedem exeception tun können, die während der Ausführung von Code auftritt, auch wird es notwendig sein, EventFiringWebDriver zu verwenden Zuhörer hinzufügen

Hier sind einige Referenzen: https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/events/WebDriverEventListener.html

https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/events/EventFiringWebDriver.html

+0

nicht sicher, dass es mit Webdriver verwandt ist. Dies sollte eine Testlösung sein. – user3535807

0

zur Zeit stoppt auf zwingende TestNG ITestListener - onTestSkipped Methode. Nachteile sind, dass Screenshots für jede übersprungene Methode gemacht werden. Natürlich sollte der Code unterhalb des Codes überarbeitet werden, aber es ist ein guter Anfangspunkt. Hinweis: Sie sollten sich diese benutzerdefinierten Hörer in Ihr testng.xml

@Override 
public void onTestSkipped(ITestResult result) { 
    if(result != null){ 
     String failedTestScreenshotFolder = Paths.get("").toAbsolutePath().toString() + "path/skippedScreenshots/"; 
     WebDriver webDriver = ((TestBase)result.getInstance()).webDriver; 
     File scrFile = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE); 
     try { 
      String className = result.getTestClass().getName(); 
      FileUtils.copyFile(scrFile, new File(failedTestScreenshotFolder + className.substring(className.lastIndexOf(".") + 1) + "." + result.getMethod().getMethodName() + ".jpg")); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
Verwandte Themen