Ruby on rails 使用Cucumber和Capybara在Rails 4测试中丢失会话更改

Ruby on rails 使用Cucumber和Capybara在Rails 4测试中丢失会话更改,ruby-on-rails,session,selenium-webdriver,cucumber,capybara,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中通过的会话的功能测试现在在Rails 4中失败 我做了以下工作: 1浏览到具有默认为第一行的下拉列表的表单 2将下拉列表更改为另一行,其值存储在会话中 3.访问其他页面 4返回原始页面,验证下拉列表是否具有步骤2中选择的值,而不是默认值。此功能在代码中通过访问会话变量

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

使用在Rails 3.2中通过的会话的功能测试现在在Rails 4中失败

我做了以下工作:

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

如果我手动测试该功能,它将按预期工作,下拉列表具有正确的值。 如果我用Cucumber使用tip-in逐步完成场景,如上所述,一切都很好 只有当我在自动模式下运行Cucumber时,我才能看到,使用Selenium和@javascript标记,当我返回页面时,下拉列表显示的是默认值,而不是所选值

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

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

到底发生了什么事?我看不出正常的现场操作有什么不同,循序渐进的Cumber有效,自动化Cumber失败

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

公平地说,我还升级了黄瓜和水豚宝石,因此将测试这些宝石升级是否是罪魁祸首,这将为我提供一条返回的道路,但我真的需要尝试在某个阶段向前推进

提前谢谢


编辑:我现在发现问题出在selenium webdriver 2.40.0上,因为我的测试通过了selenium webdriver gem版本,我使用的是Rails 3.2.37.0和2.39.0,但在2.40.0和Cucumber 1.3.10、Cucumber Rails 1.4.0和Capybara 2.2.1上失败。我将针对selenium webdriver提出缺陷投诉。

您有任何代码吗?问题是找出哪些代码是相关的。但是我发现问题出在selenium webdriver 2.40.0上,请参见编辑。您是否记录了与此相关的问题?问题在哪里被追踪?还有更多的细节吗?我也有类似的问题。