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

我正在尝试使用以下代码处理身份验证弹出窗口:

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.http.phishy-userpass-length", 255);
profile.setPreference("network.automatic-ntlm-auth.trusted-uris", "x.x.x.x");
driver = new FirefoxDriver(profile);
baseUrl="http://" + login + ":" + password + "@" + url;
driver.get(baseUrl + "/");

当我执行测试时,页面显示身份验证弹出窗口,并且仍然加载,直到我单击取消按钮。一个那一刻,我可以进入下一页,这意味着身份验证成功但仍然总是显示身份验证弹出窗口


答案 1

警报方法 authenticateUsing() 允许您跳过“Http 基本身份验证”框。

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

截至硒3.4,它仍处于测试阶段

目前,实施仅完成于InternetExplorerDriver


答案 2

不要使用 firefox 配置文件,并尝试以下代码:

driver.get("http://UserName:Password@Example.com");

如果您在IE浏览器中实现它,则需要执行某些操作。

如果您的身份验证服务器需要带有域的用户名,例如“domainuser”,则需要在URL中添加双斜杠:/

//localdomain\user:password@example.com

推荐