2016-11-30 10 views
0

JavaScriptを明示的に実行することによってトリガされたアラートを受け入れることができないのはなぜですか(InternetExplorerDriverを使用)。JavaScriptによってトリガされたアラートを受け入れる

driver.ExecuteJavaScript("myfuncTriggeringAnAlert()"); 

var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5)); 
var alert = wait.Until(ExpectedConditions.AlertIsPresent()); 
alert.Accept(); 

コードがChromeDriverを使用して素晴らしい作品、残念ながらしかし、InternetExplorerDriverでもExecuteJavaScript()呼び出しから戻りません。それは単に60秒後にタイムアウトします。

アイデア?これはよく知られた行動ですか?

IE11 + IEドライバ2.48.0

+0

(IEドライバー3.0と同じ動作) –

+0

はい、IEドライバーで警告/プロンプト/確認を処理するバグはほとんどありません。実際には「chromedriver」もあります。 – Andersson

+0

ああ...私は1つの詳細を見逃しました:)アラートに切り替えるのをスキップしました!あなたは 'alert.switch_to_alert()'( 'Python'構文)や' alert.switchTo()。alert()のようなものが必要です: 'wait.Until(ExpectedConditions.AlertIsPresent()); ); '(' Java'構文)...申し訳ありません、私はあなたのプログラミング言語を認識できませんまた適切なタグを追加していません – Andersson

答えて

0

私はこの問題は、JavaScriptをwindow.alert機能だと思います。 Internet Explorerでは、他のブラウザと同じように動作しません。 Selenium WebDriverは正しく処理できません。私の知る限りでは、IEで手動で閉じることができます。

したがって、ネイティブアラートを使用しないように、myfuncTriggeringAnAlertの機能を変更します。たとえば、hereのようなカスタムアラートダイアログを使用できます。

+0

実際には、一般的には 'window.alert()' 'IE Driver'と表示されることがありますが、場合によっては問題が発生する可能性があります。 – Andersson

+0

残念ながら、別のアラートライブラリに変更することはできません。私たちは手動でSeleniumを使うのではなく、IEでアラートの動作を手動でテストしています:-( –