2016-03-18 41 views
1

我嘗試使用下面的代碼來處理身份驗證彈出:如何處理身份驗證彈出與硒的webdriver在Java中

WebDriverWait wait = new WebDriverWait(driver, 10);  
Alert alert = wait.until(ExpectedConditions.alertIsPresent());  
alert.authenticateUsing(new UserAndPassword(**username**, **password**)); 

當我執行測試,頁面顯示的驗證彈出和光標不停閃爍在用戶名上。而不是繼續進行。 10秒後我收到超時異常org.openqa.selenium.TimeoutException

完全例外: 異常線程「main」 org.openqa.selenium.TimeoutException:10秒等待警報後超時在場

我已經通過增加超時期限爲100 還試圖嘗試加入了Thread.sleep聲明 但它不會工作

+0

請嘗試driver.switchTo()。alert()。authenticateUsing(..)並檢查。 –

+0

重複[this](http://stackoverflow.com/questions/11522434/how-to-handle-login-pop-up-window-using-selenium-webdriver) – MikeJRamsey56

回答

0

我已經非常成功的應用是建立一個嵌入式Browsermob代理服務器的方法(在Java代碼中)並註冊一個RequestInterceptor來截獲所有傳入的請求(即與所討論的主機/ URL模式匹配)。

如果您有其他需要基本驗證的請求,add anAuthorization需要憑證('Basic'+ Base64編碼'user:pass'字符串的HTTP標頭,那麼對於'foo:bar'設置值Basic Zm9vOmJhcg==

啓動服務器,將其設置爲Web代理for Selenium traffic,並且當發出需要驗證的請求時,代理將添加標頭,瀏覽器將會看到它,驗證憑據,而不是需要彈出對話框。

根本不需要處理對話框。另一個好處是,因爲它是一個純粹的HTTP解決方案,它在所有瀏覽器和操作系統中都是一樣的。

相關問題