gpt4 book ai didi

java - 无法使用 java webdriver 关闭身份验证弹出窗口

转载 作者:行者123 更新时间:2023-11-30 07:38:31 24 4
gpt4 key购买 nike

在检索带有身份验证的页面时,我无法关闭对话框。请参阅下面的示例:

webDriver.manage().timeouts().implicitlyWait(1, java.util.concurrent.TimeUnit.MINUTES);
webDriver.manage().timeouts().pageLoadTimeout(1, java.util.concurrent.TimeUnit.MINUTES);
webDriver.manage().timeouts().setScriptTimeout(1, java.util.concurrent.TimeUnit.MINUTES);
webDriver.get("http://sv2.biz/")
try {
Alert alert = webDriver.switchTo().alert();
alert.accept()
alert.dismiss()
} catch (Exception e) {
//do nothing
}

webDriver 挂起无法使用。 webDriver 不会超时,因此在终止 java 进程时它永远不会返回到网格。

最佳答案

Selenium 无法与基本身份验证弹出框交互。相反,您需要拦截网络流量并使用代理添加基本身份验证 header 。

我个人的偏好是browsermob proxy .

要将其挂接到selenium,您需要执行以下操作:

final String basicAuthKey = "base64_encoded_username_and_password";

BrowserMobProxy browserMobProxy = new BrowserMobProxyServer();
browserMobProxy.start();
browserMobProxy.addRequestFilter(new RequestFilter() {
@Override
public HttpResponse filterRequest(HttpRequest request, HttpMessageContents contents, HttpMessageInfo messageInfo) {
request.headers().add("Authorization", basicAuthKey);

return null;
}
});
Proxy proxySettings = ClientUtil.createSeleniumProxy(browserMobProxy, InetAddress.getLoopbackAddress());
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(PROXY, proxySettings);
WebDriver driver = new ChromeDriver(capabilities);

显然,您需要弄清楚将使用的基本身份验证 key 是什么,最简单的方法是在授权后查看您的网络流量并查看“授权” header 的设置到。如果您愿意,您还可以手动对用户名/密码进行编码。有关基本身份验证的更多信息,请单击 Here .

关于java - 无法使用 java webdriver 关闭身份验证弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35027555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com