我们有一个标准的黄瓜集成测试堆栈,使用
- 红宝石 v.1.9.3,
- 导轨 v.3.2.13
- 水豚 v.2.1.0
- Capybara-Webkit v.1.0.0
- 工厂女孩 v.4.2.1
我们最近遇到了一个问题,涉及多个连续 ajax 请求的场景集合偶尔会失败,并出现以下错误:
Capybara::Webkit::NodeNotAttachedError (Capybara::Webkit::NodeNotAttachedError)
./features/step_definitions/patient_steps.rb:133:in `/^I should see the followin
g patient names in this order:$/'
features\searching_patients_index.feature:39:in `Then I should see the following
patient names in this order:'
有趣的是,这个错误只会在 Windows 机器上抛出。
对这个问题最典型的反应是:
强制执行某种 sleep 或 wait_until (尽管它已被弃用,但我们恢复到 Capybara v.1.1.3 仍然尝试)但这并没有帮助。
我们尝试增加默认的 Capybara 等待时间
我们通过检查 DOM 的特定部分是否可见来尝试“等到_可见”
When(/^I wait until "(.*?)" is visible$/) do |selector| page.has_css?("#{selector}", :visible => true) end
这是失败功能之一的示例:
Scenario: Searching and then sorting patients
When I search for "J"
And I click on the "Name" header in the "patients" table
And I wait until ".patient.odd" is visible
Then I should see the following patient names in this order:
| names |
| Smith, John |
| Schmo, Jill |
Then the result content should not include "Drapper, Don"
我们使用 Ajax 来搜索表格并按列对其进行排序,因此在此示例中,我们正在测试排序时搜索是否仍然存在。
如果我们可以提供任何进一步的背景信息,请告诉我们,并提前感谢您的帮助!