如何处理“意外警报打开”?

2022-09-02 11:14:33

我遇到了一个Selenium投掷问题,因为弹出窗口timeout exception

  unexpected alert open
  not provide any stacktrace information)
  Command duration or timeout: 5 milliseconds

警报有 和 按钮。我知道两种方法来处理这个问题OKCANCEL


第一种方法是重新打开新会话

driver.quit();
driver = new ChromeDriver();

第二种方式是使用机器人类

Robot r = new Robot();
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);

但是,此方法不具有时间效率。有没有更好的方法?


答案 1

这应该可以解决问题:

driver.switchTo().alert().accept();

答案 2

处理硒中警报的方法

  1. 单独决定每个

如果需要单独对测试中的每个警报执行操作,驱动程序会为你提供切换到警报的选项,并决定是接受还是消除它。

driver.switchTo().alert().accept();

  1. 默认设置处理

如果希望以相同的方式处理所有警报,则可以在测试执行开始时将全局功能设置为默认在警报出现时接受忽略消除警报。

capabilities.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);

  1. 使用机器人类

或者,您可以使用 Robot 类发送 Enter 键事件,该事件将接受警报。

Robot r = new Robot();
 
r.keyPress(KeyEvent.VK_ENTER);
r.keyRelease(KeyEvent.VK_ENTER);


推荐