現在、TestListenerAdapter メソッドの onTestFailure と onTestSuccess をそれぞれオーバーライドすることで、TestNG の失敗と成功のスクリーンショットをキャプチャしています。これを行うには、スクリーンショットを撮りたいドライバーを指定する必要があります。
私の質問:メソッド レベルでテストを並行して実行するときにスクリーンショットをキャプチャする良い方法はありますか?
テストを並行して実行するには、個々のテストごとに一意のドライバー インスタンスが必要です。したがって、常に x 個のドライバー インスタンスが実行されています。スクリーンショットをキャプチャするときが来たら、どのドライバーを使用するかをどのように決定しますか?
以下のコードの抜粋:
public class OnFailureListener extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult tr) {
Screenshots.captureScreenshot(tr);
super.onTestFailure(tr);
}
--
public static void captureScreenshot(ITestResult tr) {
WebDriver driver = TestClass.driver;
if (driver instanceof TakesScreenshot) {
String filename = "path/to/screenshot/file";
try {
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File(filename));
} catch (IOException e) { e.printStackTrace(); }
}