繁体   English   中英

如何使用Java中的Selenium WebDriver处理身份验证弹出窗口

[英]How to handle authentication popup with Selenium WebDriver in 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语句,但是它不起作用

我非常成功地使用的方法是设置一个嵌入式的Browsermob代理服务器(使用Java代码)并注册一个RequestInterceptor来拦截所有传入的请求(与所讨论的主机/ URL模式匹配)。

当您有一个原本需要Basic auth的请求时, 添加一个带有所需凭据 Authorization HTTP标头('Basic'+ Base64编码'user:pass'字符串。所以'foo:bar'你设置了值Basic Zm9vOmJhcg==

启动服务器,将其设置为Selenium流量的Web代理,当发出需要身份验证的请求时,代理将添加标头,浏览器将看到它,验证凭据,而不需要弹出对话框。

您根本不需要处理该对话框。 另一个好处是,由于它是纯HTTP解决方案,因此在所有浏览器和操作系统上都可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM