2016-11-08 6 views
1

私は、クロム54.0.2840.87(現在の最新のクロムバージョン)とクロムドライバ2.25(現在の最新のクロムドライバ)を使用してセレンでアラートを処理しようとしています。 これは警告であり、ポップアップではないことを確認しました(inspect要素オプションはありません)。セレンは警告を処理するとき例外を返します

また、私は警告を扱うコードの前にブレークポイントを配置することで、何のタイミングの問題はありませんことを確認し作りましたが、それは例外を与える:org.openqa.selenium.NoAlertPresentException:なし警告この

オープンです私は成功せず、使用しようとしてきたコード: driver.switchTo().alert().accept();

も成功せず、コードを使用して存在することがアラートを待機しようとした: wait.until(ExpectedConditions.alertIsPresent());

はまた受け入れるようにjavascriptのexecuteScriptを使用しようとしました成功なし警告:私が受け取った警報に ((JavascriptExecutor)m_driver).executeScript("window.confirm = function(msg){return true;};");

リンク:あなたの助けを https://i.stack.imgur.com/n8FcE.png

感謝。

+0

可能な重複http://stackoverflow.com/questions/29554564/bypass-external -protocol-request-popup-during-selenium-automation) – stackoverflow

答えて

0

これはアラートボックスではありません。だからあなたは伝統的な方法でそれを処理することができなくなります。回避策として、このプロトコルハンドラボックスをクロムローカル状態ファイルから無効にすることができます。

ウィンドウの場合: ローカル状態ファイルはC:\Documents and Settings\<USERNAME>\Local Settings\Application Data\Google\Chrome\User Dataにあります。

「ローカルステート」ファイルを編集し、"caxhost": false,の下にプロトコルを追加する行を追加します。 Linux用の

ここからの手順に従ってください。https://askubuntu.com/questions/465586/how-to-reset-external-protocol-handler-in-chrome

[セレン・オートメーションの間にバイパスの "外部プロトコルリクエスト" ポップアップ](の
+0

ありがとうございました。 これはアラートではない場合、それは何ですか? アプリケーションを実行するには、このアラートを受け入れる必要があります。 私はそうすることができる堅牢な方法はありますか? – MosheG

+0

アラートボックスの詳細については、https://en.wikipedia.org/wiki/Alert_dialog_boxを参照してください。バイパスしようとしているダイアログボックスは、別の種類のポップアップで、別のアプリケーションを起動するように指示しています。 –

+0

のコーディングの言葉javascript 'alert()'はダイアログをポップアップする関数です。 –

関連する問題