2016-08-08 35 views
0

ich gefunden habe, was eine weit verbreiteter sein sieht Methode Screenshots bei einem Fehler zu erfassen, wenn Java + Gurke mit, das ist schön und einfach ist:Screenshot bei einem Fehler mit Java + Gurke

@After 
public void embedScreenshot(Scenario scenario) throws Exception { 
    if (scenario.isFailed()) { 
     try { 
      byte[] screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); 
      String testName = scenario.getName(); 
      scenario.embed(screenshot, "image/png"); 
      scenario.write(testName); 
     } catch (WebDriverException wde) { 
      System.err.println(wde.getMessage()); 
     } catch (ClassCastException cce) { 
      cce.printStackTrace();} 
     } 
    } 
} 

Wie würde ich schreibe die Image-Datei beispielsweise in einen Ordner auf dem Desktop anstatt in das Projektverzeichnis und gebe ihm einen benutzerdefinierten Namen wie den Namen meines Gurken-Testszenarios?

Antwort

0

Sie können das Szenario Namen von den Scenario scenario wie diese:

scenario.getName() 

Dann können Sie einfach erstellen zwei File Objekte, eines für den Screenshot und einen des Ziels und verwenden Sie die org.apache.commons.io.FileUtils den Screenshot zu kopieren Datei in den Zielordner:

FileUtils.copyFile(file, destFile); 
+0

Dank. Ich habe den OutputType so geändert, dass er "FILE" anstatt "Bytes" ist, und es funktionierte wie ein Zauber. – gppanter

0

@gppanter einbetten Methode werden nur Bytes als args.Then akzeptieren wie haben Sie that.I geändert versuchte Screenshot für meinen Code zu bekommen

@After 
public void embedScreenshotOnFail(Scenario s) { 
    if (s.isFailed()) try { 
     File screenshot = 
      ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); 
    s.embed(screenshot , "image/png"); 
    } catch (ClassCastException cce) { 
     cce.printStackTrace(); 
    } 
} 
+0

Hallo Rakhi. Ich habe meinen ursprünglichen Beitrag bearbeitet, um den Code zu zeigen, den ich derzeit verwende, der für mich funktioniert. (Ich habe gerade erfahren, dass SOF Code in Antworten auf Kommentare nicht erlaubt). Ich habe tatsächlich wieder 'OutputType.BYTES' verwendet. – gppanter