测试来自Selenium的onbeforeunload事件
-
03-07-2019 - |
题
我正在尝试为使用onbeforeunload事件的网页编写Selenium测试,以便在离开前提示用户。 Selenium似乎无法识别出现的确认对话框,或提供点击确定或取消的方法。有没有办法做到这一点?我正在使用Java Selenium驱动程序,如果这是相关的。
解决方案
您可以编写一个用户扩展(或者只是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
。我把它放在测试拆解代码中。
警告:这提供了另一种解决方案
Watij - http://watij.com/ - 可以在这里提供帮助。或者如果你对ruby感到满意,那么watir可以提供帮助 - http://wtr.rubyforge.org/ 的Install.html
当我遇到使用Selenium浏览器的有限控制时,我转向 MozLab 插件解决了我的问题,如果只针对一个浏览器平台。
不隶属于 StackOverflow