2016-08-08 56 views
0

我發現什麼看起來是捕獲失敗的截圖廣泛使用的方法使用Java +黃瓜,這是很好的,容易在:截圖上與Java +黃瓜失敗

@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();} 
     } 
    } 
} 

我會怎樣例如,將圖像文件寫入桌面上的文件夾,而不是默認的項目目錄,併爲其指定一個自定義名稱,例如我的Cucumber測試場景的名稱?

回答

0

您可以從Scenario scenario這樣得到的方案名稱:

scenario.getName() 

然後,你可以創建兩個File對象,一個是屏幕截圖和目標之一,並使用org.apache.commons.io.FileUtils複製截圖文件到目標文件夾:你是如何改變that.I試圖讓屏幕截圖我的代碼

FileUtils.copyFile(file, destFile); 
+0

謝謝。我將輸出類型修改爲'FILE'而不是Bytes,它的功能就像一個魅力。 – gppanter

0

@gppanter嵌入方法只接受字節args.Then

@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

嗨Rakhi。我編輯了我原來的帖子,顯示了我目前使用的代碼,這對我很有用。 (我剛剛瞭解到SOF不允許在評論回覆中輸入代碼)。我確實回去使用'OutputType.BYTES'。 – gppanter