我正在尝试为使用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 插件解决了我的问题,如果只针对一个浏览器平台。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top