当我在Ruby on Rails应用程序中没有安装turbolinks gem的情况下运行selenium测试时,测试通过了。当我包含turbolinks时,测试会失败。例如,如果测试开始
打开/
clickAndWait link=Sign in
键入id=session_email any@example.com
然后我会得到一个错误
“找不到errorElement id=session_email。
当我查看页面源代码时,安装了turbolinks的session_email id仍然在那里。我发现了这个页面,http://www.digitalkingdom.org/rlp/tiki-index.php?page=Selenium+And+Javascript,它似乎表明在检测页面是否完全加载时可能存在问题。
有没有办法在不改变测试套件中数百行代码的情况下修复这个问题?如果没有,有没有可靠的selenium方法可以测试turbolinked页面是否完全加载?
发布于 2013-03-28 08:58:36
经过对github turbolinks-compatability project的一些帮助后,我能够提供这个问题的部分答案。
如果使用turbolinks gem,那么您将需要修改selenium测试用例,以确保页面真正加载。例如,如果测试中包含以下代码
Open /
clickAndWait link=Sign in
type id=session_email any@example.com则需要将其修改为
Open /
click link=Sign in
waitForElementPresent id=session_email
type id=session_email any@example.com您可以使用许多"waitFor“修饰符,这取决于您下一步要测试的页面上的功能。
但是,如果测试涉及到javascript弹出,那么您不应该添加waitFor命令。举个例子,如果你有像这样的测试
clickAndWait link=Delete
assertConfirmation Are you Sure?您不应该修改代码。实际上,在javascript弹出窗口的情况下,添加waitFor测试会挂起执行。
此解决方案涉及对代码的逐行手动修改。我已经在Selenium用户组上打开了一个issue,看看是否有更好的方法来处理这个问题。
https://stackoverflow.com/questions/15471780
复制相似问题