私は、CapybaraによってスピンアップされたChromeのインスタンスで、onbeforeunloadから生成されるダイアログを無効にしたいと考えています。私は非常に大きなテストスイートを持っており、訪問/更新のたびに 'Leave'確認をクリックするコードを含めるように修正するのは実用的ではありません。前回の読み込みダイアログがテストの妨げにならないようにする
訪問とリフレッシュの前にpage.execute_script ‘window.onbeforeunload = undefined;’
を追加しようとしましたが、これは動作していますが、すべての訪問と更新の呼び出しを修正する必要があるという問題があります。
この機能を無効にするために追加できるChrome CLIオプションがあるかどうか確認しましたが、関連するものは見つかりませんでした。私はここにチェックした:https://peter.sh/experiments/chromium-command-line-switches/しかし、アンロード、アラート、およびダイアログを検索した後、一致したものは何も関連していなかった。
私はChromedriver v2.33、Chrome 62、Capybara 2.5、およびSelenium-webdriver 2.53.4を使用しています。必要に応じてこの投稿を詳細情報で更新します。
これは可能ですか? - カピバラvisit
とrefresh
方法あなたのアプリがそれほどbeforeunloadアラートを登録している場合は、あなたの設計上の選択を再考したい場合があります、が、常に呼び出すあなたexecute_script
最初の最も簡単な解決策は
module BeforeUnloadDisabler
def visit(*args)
execute_script 'window.onbeforeunload = undefined;'
super
end
def refresh(*args)
execute_script 'window.onbeforeunload = undefined;'
super
end
end
::Capybara::Session.prepend(BeforeUnloadDisabler)
ようなものになるだろうようにするに