2017-08-08 92 views
1

我遇到了使用硒關閉登錄請求的問題。如何關閉登錄請求窗口?

我正在做一些自動測試的網站會不時請求登錄。

這是已知的問題,你所要做的就是關閉登錄請求,我正在爲此編寫Java腳本。有點這個我的小代碼似乎沒有做任何事情。

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

任何想法爲什麼?

+0

有沒有驗證彈出? –

+1

像: - https://staging.carfax.si/ –

+0

@ PapeK24我檢查了你喜歡的鏈接。這是一個身份驗證彈出,我想知道,你是否試圖關閉身份驗證彈出而不傳遞任何用戶名/密碼值? –

回答

1

看來的webdriver的警報並沒有爲我工作,因爲登錄請求不漲JavaScript警告事件改變標誌設置爲false。所以沒有什麼可檢測或切換到。

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

謝謝大家的幫助:

通過這段代碼,只需發送ESCAPE鍵瀏覽器解決。

2

你可以做的是先檢查是否有對不

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; 
    } 
} 

彈出存在,如果它存在,那麼你可以接受它像

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

OR

JavascriptExecutor爲你工作。請注意,您應該在點擊調用警報的事件之前執行它。

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

注意: - 請勿在點擊調用警報確認框的事件後使用它。以上代碼默認情況下將確認框設置爲true表示如果調用該頁面上的所有確認框,則表示您接受/單擊確定。如果你想關閉提醒

希望它會幫助你:)

+0

我會檢查並讓你知道 – PapeK24

+0

很酷..我已經添加了JavaScriptExecutor代碼也。如果在頁面上隨時調用,它會接受你的所有警報。 –

+0

似乎不適合我。可能不是一個警告,因爲你的代碼等待,直到超時。我可能會嘗試發送ESC鍵或其他...感謝您的幫助。 – PapeK24