Webdriver 2.28 автоматически делает снимок экрана при исключении / ошибке / ошибке?

автоматически ли Webdriver 2.28 делает снимок экрана при исключении / ошибке / ошибке?

Если это так, где я могу найти скриншот? Каталог по умолчанию?

3 ответов


нет, он не делает это автоматически. Два варианта вы можете попробовать:

  1. использовать 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);
    
  2. если вы используете 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 в качестве библиотеки тестирования, вы можете реализовать прослушиватель, методы которого будут выполняться на разных событиях (сбой, успех или другое). В этих методах вы можете реализовать необходимую логику (например, создание скриншотов).