2016-09-23 15 views
0

@Testが失敗している間にスクリーンショットをキャプチャする典型的な解決策がありますが、@Before/AfterClass/Methodに失敗する可能性がありますか?TestNG @BeforeMethodのスクリーンショットをキャプチャすることはできますか?

なぜ私はそれが必要ですか? - テストクラス(ログイン)の共通ロジックを使用して特定のページに行くのは、特に@BeforeMethodの方が良いでしょう。

+0

にこのカスタムリスナーを含める必要があり、' \t公共ボイドtakeScreenShotOnFailure(ITestResult testResult)を@AfterMethodにIOException { \t \t場合を(スローtestResult.getStatus()== ITestResult.FAILURE){ \t \t \t System.out.println(testResult.getStatus()); \t \t \tファイルscrFile =((TakesScreenshot)ドライバ).getScreenshotAs(OutputType.FILE); \t \t \t FileUtils.copyFile(scrFile、新しいファイル( "D:\\ testScreenShot.jpg")); \t} \t} @BeforeMethod – user1207289

答えて

1

、またリスナーを追加するEventFiringWebDriverを使用する必要があるでしょうあなたは、あなたがコードの実行中に発生したすべてのexeceptionにsmthnを行うことができるようになる方法onExceptionに興味がある可能性が試してみて、あなたのケースでWebDriverEventListenerを実装することもできます

は、ここではいくつかの参照です: https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/events/WebDriverEventListener.html

https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/events/EventFiringWebDriver.html

+0

についても、webdriverに関連するかどうかは分かりません。関連するソリューションをテストする必要があります。 – user3535807

0

は現在、TestNGのITestListener上書きで止まる - onTestSkipped方法を。スクリーンショットは、スキップされたそれぞれ@Testメソッドのために取っているということです。 offcourseでは、コードの下にリファクタリングする必要がありますが、開始するのが良い点です。注:あなたはこのような `Itestresult`を使用しようとしましたあなたのtestng.xml

@Override 
public void onTestSkipped(ITestResult result) { 
    if(result != null){ 
     String failedTestScreenshotFolder = Paths.get("").toAbsolutePath().toString() + "path/skippedScreenshots/"; 
     WebDriver webDriver = ((TestBase)result.getInstance()).webDriver; 
     File scrFile = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE); 
     try { 
      String className = result.getTestClass().getName(); 
      FileUtils.copyFile(scrFile, new File(failedTestScreenshotFolder + className.substring(className.lastIndexOf(".") + 1) + "." + result.getMethod().getMethodName() + ".jpg")); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
関連する問題