21

特にビルド サーバーでテスト ケースが失敗した場合、画面の写真やスクリーンショットを撮り、後で何が起こったかをデバッグするのに役立てたいと考えています。スクリーンショットを撮る方法は知っていますがtakeScreenshot()、テストが失敗した場合にブラウザーを閉じる前に、JUnit でメソッドを呼び出す方法を望んでいました。

いいえ、try/catch を追加するために膨大な数のテストを編集したくありません。私はおそらく、おそらく注釈に話しかけられる可能性があると思います。私のすべてのテストには共通の親クラスがありますが、これを解決するためにそこでできることは何も考えられません。

アイデア?

4

3 に答える 3

18

いくつかの簡単な検索でこれにたどり着きました:

http://blogs.steeplesoft.com/posts/2012/grabbing-screenshots-of-failed-selenium-tests.html

基本的に、彼は次の呼び出しを行う try/catch ブロックでRuleテストをラップする JUnit4 を作成することをお勧めします。Statement

imageFileOutputStream.write(
    ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES));

それはあなたの問題に役立ちますか?

于 2012-09-18T04:24:45.320 に答える
7

実行中のすべてのテストにこの動作をすばやく追加したい場合は、RunListenerインターフェイスを使用してテストの失敗をリッスンできます。

public class ScreenshotListener extends RunListener {

    private TakesScreenshot screenshotTaker;

    @Override
    public void testFailure(Failure failure) throws Exception {
        File file = screenshotTaker.getScreenshotAs(OutputType.File);
        // do something with your file
    }

}

このようにリスナーをテストランナーに追加します...

JUnitCore junit = new JUnitCore();
junit.addListener(new ScreenshotListener((TakesScreenShots) webDriver));

// then run your test...

Result result = junit.run(Request.classes(FullTestSuite.class));
于 2015-10-13T20:48:05.663 に答える