如何使用 java 在 selenium webdriver 的下一个选项卡中处理需要弹出的身份验证?
How to handle authentication required pop up in next tab in selenium webdriver using java?
在 Chrome 中,单击某个 link 会打开一个带有 "Authentication Required" 弹出窗口的新选项卡。如您所见,它有 'User name' 和 'password' 以及 'Log In' 和 'Cancel' 按钮。
使用 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 有问题的模式)。
当您有一个需要基本身份验证的请求时,add an Authorization
HTTP header 具有所需的凭据('Basic ' + Base64 编码的 'user:pass' 字符串。所以对于 'foo:bar' 你应该设置值 Basic Zm9vOmJhcg==
)
启动服务器,将其设置为网络代理for Selenium traffic,当发出需要身份验证的请求时,代理将添加header,浏览器将看到它,验证凭据,不需要弹出对话框。
您根本不需要处理对话框。另一个好处是,因为它是一个纯 HTTP 解决方案,所以它在所有浏览器和操作系统上的工作方式都是一样的。
在 Chrome 中,单击某个 link 会打开一个带有 "Authentication Required" 弹出窗口的新选项卡。如您所见,它有 'User name' 和 'password' 以及 'Log In' 和 'Cancel' 按钮。
使用 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 有问题的模式)。
当您有一个需要基本身份验证的请求时,add an Authorization
HTTP header 具有所需的凭据('Basic ' + Base64 编码的 'user:pass' 字符串。所以对于 'foo:bar' 你应该设置值 Basic Zm9vOmJhcg==
)
启动服务器,将其设置为网络代理for Selenium traffic,当发出需要身份验证的请求时,代理将添加header,浏览器将看到它,验证凭据,不需要弹出对话框。
您根本不需要处理对话框。另一个好处是,因为它是一个纯 HTTP 解决方案,所以它在所有浏览器和操作系统上的工作方式都是一样的。