繁体   English   中英

如何使用Java处理Selenium Webdriver中下一个选项卡中弹出的所需身份验证?

[英]How to handle authentication required pop up in next tab in selenium webdriver using java?

在Chrome浏览器中,点击某个链接会打开一个新标签,其中弹出“需要身份验证”。 如您所见,它具有“用户名”和“密码”以及“登录”和“取消”按钮。

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

在此处输入图片说明

我试过的代码:

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();
}  

谢谢戈文德

使用Selenium Webdriver处理Windows身份验证

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

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

http:
//GuravPraveen:Passwrd123@YourURL


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

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

当您有一个本来需要基本身份验证的请求时,请添加带有所需凭据(“ Basic” + Base64编码的“ user:pass”字符串 Authorization HTTP标头。因此,请为“ foo:bar”设置值) Basic Zm9vOmJhcg==

启动服务器,将其设置为Selenium通信的Web代理,并且在发出需要身份验证的请求时,代理将添加标头,浏览器将看到标头,验证凭据,而无需弹出对话框。

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

暂无
暂无

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

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