我有一个网站列表,一些网站在网站打开时显示一个身份验证窗口,我需要知道哪些网站显示此身份验证弹出窗口,哪些不是。 我正在尝试验证页面打开后是否显示身份验证浏览器弹出窗口。但是当我使用:
Alert alert = driver.switchTo().alert();
alert.accept();
我收到错误:
no alert open(Session info: chrome=59.0.3071.115)(Driver info: chromedriver=2.30.477691(6ee44a7247c639c0703f291d320bdf05c1531b57),platform=Linux 4.4.0-83-generic x86_64) (WARNING: The server did not provide any stacktrace information)
当然,网站上会出现一个身份验证窗口。 enter image description here
还有一件事,我不需要在这个网站上进行授权,我只需要确保窗口出现。
答案 0 :(得分:-1)
您可以创建/修改方法isAlertPresent,如下所示并尝试。它可能对你有帮助。
如果出现警报,首先用以下方法确认
public boolean isAlertPresent() {
try{
WebDriverWait wait = new WebDriverWait(driver, 5);
wait.until(ExpectedConditions.alertIsPresent());
return true;
}
catch (NoAlertPresentException noAlert) {
return false;
}
catch (TimeoutException timeOutEx){
return false;
}
}
如果上面没有工作,那么JavascriptExecutor为你工作。在点击调用警报的事件之前,请务必执行它。
((JavascriptExecutor) driver).executeScript("window.confirm = function(msg) { return true; }");
注意: - 点击调用警报确认框的事件后不要使用它。默认情况下,上面的代码将确认框设置为true表示您接受/单击该页面上所有确认框上的确定(如果被调用)
这是一个身份验证弹出窗口。你可以像下面这样处理它: -
WebDriverWait wait = new WebDriverWait(driver, 10);
Alert alert = wait.until(ExpectedConditions.alertIsPresent());
alert.authenticateUsing(new UserAndPassword(username, password));
OR
driver.get("http://UserName:Password@Example.com");
按ESC: -
使用动作类
Actions action = new Actions(driver);
action.sendKeys(Keys.ESCAPE).build().perform();
机器人类代码: -
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_ESCAPE);
robot.keyRelease(KeyEvent.VK_ESCAPE);
希望它会对你有所帮助:)。