JavaScriptエラーが発生するたびにエラーダイアログが表示されます。これは常に悪い兆候です。そのため、エラーダイアログが表示された場合にテストが失敗するようにテストを設定します。Selenium - エラー状態を監視し、「ハッピーパス」テストコードを実行する
私は(非常に擬似コード!)のような何かをしたいと思います。
// start a new 'guard' thread;
start {
found = this.driver.wait(untilVisible(By.css('.myErrorDialog')), VERY_LONG_TIMEOUT);
if (found) {
// the error dialog appeared! That's bad!
throw();
}
}
// now run the test
login();
clickButton();
testBannerContains();
しかし、私は問題を抱えており、セレンが行動をスケジュールする方法と関係していると思います。
私が見つけたのは、1人のドライバーにとっては、一度に1つのものしかスケジュールできないため、私がテストの初期に設定したガードは、テストの本体が起動しないようにブロックします。
'これは起こりません'や同じテストで2つの独立したスレッドを作成する方法などの条件を処理するより良い方法はありますか?
マルチスレッドは[TestNG](http://testng.org/doc/documentation-main.html#parallel-running)で組み込まれています。それができない場合は、[this](http://roadtoautomation.blogspot.in/2015/01/road-to-parallel-execution-of-selenium_11.html)のようなものを試すことができます。 [ExpectedConditions.isAlertPresent()](https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html#alertIsPresent--)はより良い/より簡単かもしれません/適切なオプション。 – user2611581
これはウェブページへの最初のナビゲーションでのみ起こりますか? – JOberloh
@JonahOberlohいいえ、これはテストが実行されている間はいつでも可能です。テストの全期間中、エラーダイアログが表示された場合、テストは即座に失敗する必要があります –