使用Cucumber和Capybara在Rails 4测试中失去会话更改

时间:2014-02-24 07:53:36

标签: ruby-on-rails session selenium-webdriver cucumber capybara

我正在尝试将我的应用程序从Rails 3.2.15升级到Rails 4.0.3,并运行我的集成测试套件,包括Cucumber(1.3.10),Cucumber-Rails(1.4.0)和Capybara( 2.2.1)。

使用在Rails 3.2中传递的Session的功能的测试现在在Rails 4下失败。

我执行以下操作:

1)浏览到带有下拉列表的表单,默认为第一行 2)将下拉列表更改为另一行,其值存储在Session中 3)访问另一页 4)返回原始页面并验证下拉列表是否具有在步骤2中选择的值而不是默认值。通过访问会话变量在代码中处理此功能。

如果我手动测试该功能,它会按预期工作,并且下拉列表具有正确的值。 如果我使用Cucumber(使用http://itshouldbeuseful.wordpress.com/tag/capybara/中的提示)逐步完成场景,如上所述,一切都很好 只有当我以“自动模式”运行Cucumber时,我才能看到,使用Selenium和@javascript标签,当我返回页面时,下拉列表显示默认值而不是选定的值

检查会话是否已正确设置的测试步骤通过,调试语句确认这一点。

调试语句还确认在自动模式下,当我返回页面时,原始下拉值似乎保留在会话中。 调试语句还确认在手动单步执行时保留正确的值。 我尝试在所有相关步骤之间添加睡眠,这在自动模式下没有任何区别。

到底是怎么回事?我看不出正常的站点操作(有效),逐步的Cucumber(有效)和自动化的Cucumber(失败)之间会有什么不同。

很多谷歌搜索没有透露任何事情,因为我没有重定向或更改主机的步骤,这个问题似乎只在Rails 4中引入。

公平地说,我还升级了Cucumber和Capybara宝石,所以将测试看看其中一个宝石升级是否是罪魁祸首(这会让我回过头来)但我真的需要尝试继续前进某个阶段。

提前致谢。

编辑:我现在已经解决了selenium-webdriver 2.40.0的问题,因为我的测试通过了我使用的Rails 3.2(2.37.0)和高达2.39.0的selenium-webdriver gem版本。与2.40.0(和Cucumber(1.3.10),Cucumber-Rails(1.4.0)和Capybara(2.2.1))一起失败。我会提出反对selenium-webdriver的缺陷。

0 个答案:

没有答案