java - 使用 Selenium 接受 Windows 安全警报

标签 java selenium alert

环境: 我必须使用 Selenium 测试 Web 应用程序。在访问起始页之前,会引发 Windows 安全警报。由于警报/验证弹出窗口位于操作系统级别,因此无法由 Selenium Alert-API 处理。

解决方法: 为了访问该页面,我编写了一个脚本,该脚本填充用户名和密码,然后单击输入(脚本代码来自: https://automationtestingsimplified.wordpress.com/2011/08/11/how-to-handle-window-based-pop-up-using-selenium-and-autoit/ )。

要解决的问题: 尽管模式对话框已被接受,但 Selenium 会抛出“UnhandledAlertException:存在模式对话框”。

我尝试过:

  • 通过alert-api 访问模态对话框。问题是,我无法填写 在用户名中。即使我使用机器人。 “driver.switchTo().alert().accept();”也不起作用。
  • 让驾驶员等待,直到警报不再出现 “wait.until(ExpectedConditions.not(ExpectedConditions.alertIsPresent()));”
  • 接受对话框,如果已被接受,则发生事件。

可能的解决方案: 忽略对话框或将其设置为驱动程序中不存在。但我找不到解决方案。

最佳答案

我遇到了同样的问题。在找到更好的解决方案之前,我正在使用机器人将 key 发送到警报以接受它

private void acceptAlert() {
    try {
        Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_TAB);
        robot.keyPress(KeyEvent.VK_ENTER);
    } catch (AWTException e) {
        e.printStackTrace();
    }
}

关于java - 使用 Selenium 接受 Windows 安全警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31991595/

相关文章:

java - Java中使用循环和开关将二进制转换为十六进制

java - 找不到类 'org.codehaus.jackson.io.SegmentedStringWriter' ,从方法 org.codehaus.jackson.map.ObjectMapper.writeValueAsString 引用

javascript - 双重警报窗口

css - 警告框 - 如何在浏览器缓存中保存 close(x)

javascript - ExtJS/PHP/MySQL : Uncaught SyntaxError: Unexpected token ILLEGAL

java - NetBeans 的 GhostDoc

java - 在 Sqlite 中使用 where 子句更新查询

java - Selenium 在查找第一个元素的前兄弟元素时永远挂起

java - webdriver 中的显式等待和流畅等待有什么区别?

python-3.x - Unicode编码错误: 'charmap' codec can't encode character '\u2010' : character maps to <undefined>