Webdriver 2.28 は、例外/失敗/エラー時に自動的にスクリーンショットを撮りますか?
もしそうなら、スクリーンショットはどこにありますか? デフォルトのディレクトリはどれですか?
Webdriver 2.28 は、例外/失敗/エラー時に自動的にスクリーンショットを撮りますか?
もしそうなら、スクリーンショットはどこにありますか? デフォルトのディレクトリはどれですか?
いいえ、自動的には行われません。試すことができる2つのオプション:
普段お使いのドライバーに巻き付けるだけで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 のものです (Selenium にも同梱されています)。
WebDriver 自体はスクリーンショットを撮りません。しかし、あなたはこの方法で猫を取ります:((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
次に、スクリーンショットを任意の場所に保存します。
また、Thucydides のようなものを使用すると、各アクションまたはエラーでスクリーンショットを取得し、きれいなレポートに入れることができます。
簡単に言うと、いいえです。WebDriver は、ブラウザーと対話するための API です。それを使用してスクリーンショットを作成できますが、いつそれを行うべきかを知っておく必要があります。したがって、WebDriver はテストについて何も知らないため、自動的には実行されません。
TestNG をテスト ライブラリとして使用している場合は、さまざまなイベント (失敗、成功、その他) でメソッドが実行される Listener を実装できます。これらのメソッドでは、必要なロジックを実装できます (スクリーンショットの作成など)。