2016-08-08 55 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