Selenium からの onbeforeunload イベントのテスト
-
03-07-2019 - |
質問
onbeforeunload イベントを使用して、終了する前にユーザーにプロンプトを表示する Web ページの Selenium テストを作成しようとしています。Selenium は表示される確認ダイアログを認識していないか、「OK」または「キャンセル」を押す方法を提供していないようです。これを行う方法はありますか?関連する場合は、Java Selenium ドライバーを使用しています。
解決
window.onbeforeunload が設定されていることをテストするユーザー拡張機能 (または、storeEval などの一部の JavaScript) を作成し、ページから続行する前にそれを null に置き換えることができます。醜いですが、ページから離れるべきです。
他のヒント
私のアプリケーションでこれを行う必要があったのですが、 onbeforeunload
ドキュメントが保存されていない状態でユーザーがページを離れた場合、ハンドラーはプロンプトを表示します。Python コード:
driver.switch_to.alert.accept()
Java に相当するものは次のようになります。
driver.switchTo().alert().accept();
アラートが存在しない場合、上記のコードは次のエラーで失敗します。 NoAlertPresentException
したがって、プロンプトを受け入れる前に存在を確認するための別のテストは必要ありません。
私は Selenium 2.43.0 を実行していますが、これはしばらくの間実行可能だったと思います。
テスト対象ではないため、プロンプトをまったく表示したくない場合は、ブラウザーでカスタム JavaScript を実行して設定します。 window.onbeforeunload
に null
ページを離れる前に。これをテスト分解コードに入れました。
警告 :これは代替ソリューションを提供します
ワティジ -- http://watij.com/ -- ここで役に立ちます。または、Ruby に慣れている場合は、watir が役立ちます -- http://wtr.rubyforge.org/install.html
Selenium を使用してブラウザ上で制御できる制限に直面したとき、私は次のことに目を向けました。 モズラボ 1つのブラウザプラットフォームのみであれば私の問題を解決したプラグイン。