2016-03-18 44 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解决方案,它在所有浏览器和操作系统中都是一样的。

相关问题