Webdriver 2.28 автоматически делает снимок экрана при исключении / ошибке / ошибке?
автоматически ли Webdriver 2.28 делает снимок экрана при исключении / ошибке / ошибке?
Если это так, где я могу найти скриншот? Каталог по умолчанию?
3 ответов
нет, он не делает это автоматически. Два варианта вы можете попробовать:
-
использовать
WebDriverEventListener
это прикрепляется кEventFiringWebDriver
что вы можете просто обернуть вокруг вашего обычного водителя. Это займет скриншот для каждогоException
брошен основнойWebDriver
, но не если вы не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 (который также поставляется с селеном).
WebDriver не делает скриншот сам по себе. Но ты кошку возьми вот так:((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
затем сохраните снимок экрана в любом месте.
также вы используете что-то вроде Фукидида, который может делать скриншот каждого действия или ошибки и помещать его в красивый отчет.
короткий ответ: Нет. WebDriver-это API для взаимодействия с браузером. Вы можете делать скриншоты с ним, но вы должны знать, когда это сделать. Таким образом, это не делается автоматически, поскольку WebDriver ничего не знает о тестировании.
Если вы используете TestNG в качестве библиотеки тестирования, вы можете реализовать прослушиватель, методы которого будут выполняться на разных событиях (сбой, успех или другое). В этих методах вы можете реализовать необходимую логику (например, создание скриншотов).