验证是否存在身份验证浏览器弹出窗口

时间:2017-08-07 10:57:42

标签: selenium selenium-webdriver selenium-chromedriver

我有一个网站列表,一些网站在网站打开时显示一个身份验证窗口,我需要知道哪些网站显示此身份验证弹出窗口,哪些不是。 我正在尝试验证页面打开后是否显示身份验证浏览器弹出窗口。但是当我使用:

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

还有一件事,我不需要在这个网站上进行授权,我只需要确保窗口出现。

1 个答案:

答案 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);

希望它会对你有所帮助:)。