如何处理身份验证需要在使用java的selenium webdriver的下一个选项卡中弹出?

时间:2016-03-12 04:54:28

标签: java selenium selenium-webdriver selenium-chromedriver

在Chrome中,单击某个链接会打开一个新选项卡,其中包含“需要身份验证”弹出窗口。正如您所看到的,它具有“用户名”和“密码”以及“登录”和“取消”按钮。

使用Java代码,如何在此弹出窗口中输入值(用户名和密码)?因为我无法获取用户名和密码的定位器,所以此处的警报方法也不起作用。

enter image description here

我试过的代码:

public static void switchToalert() {
    driver.switchTo().alert();
    // Selenium-WebDriver Java Code for entering Username & Password as // below: 
    driver.findElement(By.id("Username")).sendKeys("userName");
    driver.findElement(By.id("Password")).sendKeys("myPassword");
    driver.switchTo().alert().accept();
    driver.switchTo().defaultContent();
}  

由于 戈文德

2 个答案:

答案 0 :(得分:2)

使用Selenium Webdriver处理Windows身份验证

您可以在URL中提供凭据,这意味着我们将在URL中添加用户名和密码,这样在运行脚本时它将绕过相同的

http://username:password@yourWebURL
##example##

http:
//GuravPraveen:Passwrd123@YourURL


driver.get("http://GuravPraveen:Passwrd123@www.xyz.com/signin");

答案 1 :(得分:0)

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

如果您的请求需要基本身份验证,add an Authorization HTTP标头需要凭据('基本'+ Base64编码'用户:传递'字符串。所以'对于' foo:bar'你设置值Basic Zm9vOmJhcg==

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

根本不需要处理对话框。另一个好处是,因为它是纯粹的HTTP解决方案,所以在所有浏览器和操作系统中都能正常工作。