检索具有身份验证的网页时,我无法关闭对话框。见下面的例子:
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进程时它永远不会返回到网格。
答案 0 :(得分:1)
Selenium无法与基本的auth弹出框进行交互。相反,您需要拦截网络流量并使用代理添加基本身份验证标头。
我个人的偏好是browsermob proxy。
要将它挂钩到硒,你需要做这样的事情:
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);
显然,您将需要弄清楚将要使用的基本身份验证密钥是什么,最简单的方法是在授权后查看您的网络流量并查看“授权”标头已设置的内容至。如果您愿意,也可以手动编码用户名/密码。有关基本身份验证的详细信息,请单击Here。
答案 1 :(得分:0)
如果这是身份验证弹出窗口,您可以使用您的应用程序URL的用户名和密码,如下所示:
https://username:password@www.sv2.biz
如果不起作用,请告诉我。