我正在使用Java语言的Selenium Webdriver。 我正在使用一个简单的get方法来打开URL。此URL向我显示一个警报身份验证框,但此警报阻止了页面加载。 我的get方法抛出超时异常并关闭页面,在此get方法期间,我无法执行任何代码行。我无法调整此警报身份验证框。
有什么办法可以处理? 谢谢
我的代码:
driver = new ChromeDriver(capabilities);
app = new EventFiringWebDriver(driver);
seleniumEvent handler = new seleniumEvent();
app.register(handler);
app.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
app.manage().timeouts().pageLoadTimeout(10,TimeUnit.SECONDS);
wait = new WebDriverWait(app, 60);
app.get(URL_1);
我从app.get(URL_1);
收到了TimeOut异常
答案 0 :(得分:2)
对于关闭警报身份验证框,您需要登录到服务器,其名称为“基本身份验证”。来自Wiki的信息:
URL编码
在访问基本访问身份验证时,客户端可以通过在URL的主机名前添加username:password @来避免登录提示。例如,以下内容将使用安全的HTTPS协议访问网站www.example.com上的页面index.html,并通过基本授权提供用户名Aladdin和密码OpenSesame凭据:
https://Aladdin:OpenSesame@www.example.com/index.html
所以您可以这样:
try {
driver.get("https://" + userName + ":" + password + "@" + YOUR_URL.split("https://")[1]);
} catch (UnsupportedCommandException e) {
LOGGER.error("Can't login to server occur error!!!", e);
}
答案 1 :(得分:0)
尝试一下:
public class A {
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
driver.get("url here");
WebDriverWait wait = new WebDriverWait(driver, 10);
try {
if (wait.until(ExpectedConditions.alertIsPresent()) != null) {
driver.switchTo().alert().dismiss();
}
} catch (TimeoutException e) {
}
}
}
答案 2 :(得分:0)
您可以参考
try {
app.get(URL_1);
} catch (Exception e) {
WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = webDriver.switchTo().alert();
alert.accept();
}
如果网页在打开时收到警报,它将在Catch块中处理警报。