我正在尝试为使用 onbeforeunload 事件在离开前提示用户的网页编写 Selenium 测试。Selenium 似乎无法识别出现的确认对话框,也无法提供点击 OK 或 Cancel 的方法。有没有办法做到这一点?如果相关的话,我正在使用 Java Selenium 驱动程序。
4 回答
您可以编写一个用户扩展(或只是 storeEval 中的一些 JavaScript 等)来测试是否设置了 window.onbeforeunload,然后在从页面继续之前将其替换为 null。丑陋,但应该让你离开页面。
我只需要为我的应用程序执行此操作,onbeforeunload
如果用户在文档处于未保存状态时离开页面,处理程序会显示提示。Python代码:
driver.switch_to.alert.accept()
Java 等价物是:
driver.switchTo().alert().accept();
如果警报不存在,上面的代码将失败,NoAlertPresentException
因此在接受提示之前无需单独测试来检查存在。
我正在运行 Selenium 2.43.0,但我认为这已经有一段时间了。
如果我根本不希望出现提示,因为这不是我正在测试的内容,我会在浏览器中运行自定义 JavaScript以在离开页面之前设置window.onbeforeunload
为。null
我把它放在测试拆解代码中。
faced same problem with "beforeunlaod" event listner, LUMINUS! a chrome addon that helps me just block the event listener in the plugin thats all..
当我面对使用 Selenium 对浏览器的有限控制时,我求助于MozLab插件,它解决了我的问题,如果仅适用于一个浏览器平台。