@Test
が失敗している間にスクリーンショットをキャプチャする典型的な解決策がありますが、@Before/After
Class/Method
に失敗する可能性がありますか?TestNG @BeforeMethodのスクリーンショットをキャプチャすることはできますか?
なぜ私はそれが必要ですか? - テストクラス(ログイン)の共通ロジックを使用して特定のページに行くのは、特に@BeforeMethod
の方が良いでしょう。
@Test
が失敗している間にスクリーンショットをキャプチャする典型的な解決策がありますが、@Before/After
Class/Method
に失敗する可能性がありますか?TestNG @BeforeMethodのスクリーンショットをキャプチャすることはできますか?
なぜ私はそれが必要ですか? - テストクラス(ログイン)の共通ロジックを使用して特定のページに行くのは、特に@BeforeMethod
の方が良いでしょう。
、またリスナーを追加するEventFiringWebDriver
を使用する必要があるでしょうあなたは、あなたがコードの実行中に発生したすべてのexeceptionにsmthnを行うことができるようになる方法onException
に興味がある可能性が試してみて、あなたのケースでWebDriverEventListener
を実装することもできます
は、ここではいくつかの参照です: https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/events/WebDriverEventListener.html
についても、webdriverに関連するかどうかは分かりません。関連するソリューションをテストする必要があります。 – user3535807
は現在、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();
}
}
}
にこのカスタムリスナーを含める必要があり、' \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