如何使用Selenium测试模态对话框?

时间:2009-05-15 03:31:52

标签: unit-testing selenium selenium-ide

我开始使用Selenium IDE并尝试测试一个充满模态对话框的网络应用程序(window.showModalDialog)。

记录测试似乎有效(除了弹出对话框时日志中没有任何内容)但它们无法正常播放。该脚本实际上打开了窗口(由按钮单击触发),但随后只是无限期地等待。

有什么建议吗?

4 个答案:

答案 0 :(得分:3)

Selenium FAQ开始,Selenium显然适用于某些类型的对话,但不适用于其他类型的对话:

  

我无法与弹出式对话框进行交互。   我的测试停止了!

     

您可以,但仅当对话框是   警报或确认对话框。其他   特殊对话不能被驳回   javascript,因此目前不能   与...互动。这些包括   “保存文件”,“记住此密码”   (Firefox)和模态(IE)对话框。   当它们出现时,Selenium只能   绝望地握手。

     

要解决此问题,您可以使用   解决方法(如果存在);除此以外   你可能不得不排除测试   你的自动语料库。对于“保存   文件“Firefox中的对话框,自定义   运行时可以指定模板   通过RC将永远导致   要下载到指定的文件   位置,无需查询用户   (看到   http://forums.openqa.org/thread.jspa?messageID=31350)。   “记住此密码”对话框   你不应该再出现   选择记住它。目前有   关于IE,可以做的事情并不多   模态对话框。

我似乎记得有人用AutoHotKey脚本解决了这个问题。

答案 1 :(得分:3)

我一直在使用Selenium IDE测试jQuery模式很长一段时间,我从来没有遇到任何问题。以下是我要做的事情,以确保测试在播放时正确执行:

  • 以尽可能慢的速度执行脚本
  • 当模态打开时,我使用waitForElementPresent命令来验证页面上是否存在至少一个组成元素;参数是,如果一个元素正确加载,可以安全地假设所有元素,因此模态窗口正确加载。

希望这会有所帮助。如果您需要进一步的帮助,可以与我共享代码以及IDE抛出给您的错误。

答案 2 :(得分:2)

答案 3 :(得分:0)

这是我在Selenium IDE中处理弹出警报的方法

右键单击元素(在本例中为弹出窗口),您可以选择一些命令。还有一个显示所有可用命令,可能是一个帮助。 你应该使用AssertElementPreset,我想在这种情况下最好的定位器是CSS。所以你可以选择AssertElementPresent。

或者

您可以在Selenium IDE上使用两个命令

selectWindow | null
verifyElementPresent | css=div.content

希望这有帮助!