0

当我在我的 Ruby on Rails 应用程序中未安装 turbolinks gem 的情况下运行我的 selenium 测试时,测试通过了。当我包含 turbolinks 时,测试失败。例如,如果测试开始

打开/
clickAndWait 链接=登录
类型 id=session_email any@example.com

然后我会得到一个错误
“[error]Element id=session_email not found.

当我查看页面源时, session_email id 仍然存在,并且安装了 turbolinks。我找到了这个页面http://www.digitalkingdom.org/rlp/tiki-index.php?page=Selenium+And+Javascript,这似乎表明检测页面已完​​全加载可能存在问题。

是否可以在不更改测试套件中数百行代码的情况下解决此问题?如果没有,是否有可靠的 selenium 方法可以测试 turbolinked 页面是否已完全加载?

4

1 回答 1

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 用户组上打开了一个问题,看看是否有更好的方法来处理这个问题。

于 2013-03-28T00:58:35.890 回答