2017-08-08 11 views
1

ログイン要求を閉じるためにセレンを使用する際に問題が発生しています。ログインリクエストウィンドウを閉じるにはどうすればいいですか?

私がいくつかの自動テストを行っているサイトは、ログインを要求するのが随時です。

これは既知の問題であり、ログイン要求を閉じるために必要なことは、そのためのJavaスクリプトを作成しようとしていることです。いくぶんこの小さなコードは何もしていないようです。

WebDriver webDriverInstance = handl.browser; 
webDriverInstance.switchTo().alert().dismiss(); 
webDriverInstance.switchTo().defaultContent(); 

なぜでしょうか?あなたは何ができるか

+0

認証ポップアップはありますか? –

+1

のような: - https://staging.carfax.si/ –

+0

@ PapeK24あなたのようなリンクを確認しました。それは認証ポップアップです。私は知りたいのですが、ユーザー名/パスワードの値を渡さずに認証ポップアップを閉じようとしていますか? –

答えて

1

ログイン要求はJavascriptのアラートイベントを上昇しないので、webdriverをのアラートが私のために動作しませんでしたようです。だから、検出するか、切り替えることは何もなかった。助けのための

Robot robot = new Robot(); 
robot.keyPress(KeyEvent.VK_ESCAPE); 
robot.keyRelease(KeyEvent.VK_ESCAPE); 

みんなありがとう:

は、単にブラウザにESCAPEキーを送信するコードのこの部分で解決しました。

2

はポップアップ存在がある場合、それが存在しているなら、あなたは

WebDriverWait wait = new WebDriverWait(driver, 10);  
Alert alert = wait.until(ExpectedConditions.alertIsPresent()); 
alert.accept(); 

OR

JavascriptExecutorのようにそれを受け入れることができない

public boolean isAlertPresent() { 
    try{ 
     WebDriverWait wait = new WebDriverWait(driver, 5); 
     wait.until(ExpectedConditions.alertIsPresent()); 
     return true; 
    } 
    catch (NoAlertPresentException noAlert) { 
     return false; 
    } 
    catch (TimeoutException timeOutEx){ 
     return false; 
    } 
} 

に最初のチェックですあなたのために働いた。アラートを呼び出すイベントをクリックする前に実行するように注意してください。

((JavascriptExecutor) driver).executeScript("window.confirm = function(msg) { return true; }"); 

注意: - アラート確認ボックスを表示するイベントをクリックしてから使用しないでください。上記のコードでは、デフォルトで確認ボックスをtrueに設定すると、そのページのすべての確認ボックスで[OK]をクリックするか、[OK]をクリックします。 falseに変更フラグあなたは

アラートを却下する場合、それはあなたを助けることを願っています:)

+0

私は確認してお知らせします – PapeK24

+0

cool .. JavascriptExecutorコードも追加しました。いつでも呼び出すことができます。 –

+0

私にとってはうまくいかないようです。あなたのコードがタイムアウトまで待つのでおそらく警告ではありません。私はちょうどESCのキーか何かを送ることを試みるかもしれない...助けthaにありがとう。 – PapeK24

関連する問題