Webdriver 2.28 是否会在异常/失败/错误时自动截屏?
如果是,我在哪里可以找到屏幕截图?默认目录是哪个?
最佳答案
不,它不会自动执行。您可以尝试两种选择:
使用
WebDriverEventListener
可附加到EventFiringWebDriver
您可以简单地将其包裹在您常用的驱动程序中。这将为底层WebDriver
抛出的每个Exception
截屏,但如果您未通过assertTrue()
检查,则不会截屏。EventFiringWebDriver driver = new EventFiringWebDriver(new InternetExplorerDriver()); WebDriverEventListener errorListener = new AbstractWebDriverEventListener() { @Override public void onException(Throwable throwable, WebDriver driver) { takeScreenshot("some name"); } }; driver.register(errorListener);
如果您使用的是 JUnit,请使用
@Rule
和TestRule
.如果测试因任何原因失败,这将截取屏幕截图。@Rule public TestRule testWatcher = new TestWatcher() { @Override public void failed(Throwable t, Description test) { takeScreenshot("some name"); } };
takeScreenshot()
方法在这两种情况下都是这样的:
public void takeScreenshot(String screenshotName) {
if (driver instanceof TakesScreenshot) {
File tempFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(tempFile, new File("screenshots/" + screenshotName + ".png"));
} catch (IOException e) {
// TODO handle exception
}
}
}
...FileUtils.copyFile()
在哪里方法是 Apache Commons IO 中的方法(它也随 Selenium 一起提供)。
关于java - Webdriver 2.28 是否会在出现异常/失败/错误时自动截屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14691571/