环境: 我必须使用 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/