当我在我的Ruby on Rails应用程序中没有安装turbolinks gem的情况下运行我的selenium测试时,测试通过了。当我包含turbolinks时,测试失败了。例如,如果测试开始
打开/
clickAndWait link =登录
输入id = session_email any@example.com
然后我会收到错误 “[错误]元素id =找不到session_email。
当我查看页面源时,session_email id仍然安装了turbolinks。我找到了这个页面http://www.digitalkingdom.org/rlp/tiki-index.php?page=Selenium+And+Javascript,这似乎表明检测到页面已经完全加载可能存在问题。
如果不改变测试套件中的数百行,是否可以解决这个问题?如果没有,是否有可靠的硒方法可以测试涡旋链接页面是否已满载?
答案 0 :(得分:1)
在对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 Users组中打开了一个issue,看看是否有更好的方法来处理这个问题。