为什么javascript没有检查我的复选框?

时间:2015-10-14 12:36:37

标签: ruby-on-rails-4 capybara

我正在尝试测试一个简单的标题复选框,检查表格中的所有复选框。

测试如下:

scenario 'select all enrolments', js: true do
  check 'all_enrolment_presentations'
  expect(page).to have_css('.enrolment-presentation-listing input[type="checkbox"]:checked', count: 1)
end

如果我将场景稍微更改为

,则会失败
scenario 'select all enrolments', js: true do
  sleep 3
  check 'all_enrolment_presentations'
  expect(page).to have_css('.enrolment-presentation-listing input[type="checkbox"]:checked', count: 1)
end

有效。

我测试了其他几个选择器,它们几乎都有相同的效果。我不想添加sleep语句来获取这样的东西。我一定做错了。

当我在没有sleep子句的情况下运行测试时,似乎找到了控件(它会突出显示),但是没有检查。请参阅截图,了解我的意思。

enter image description here

我的问题是为什么会发生这种情况,如何解决我的问题?

注意我使用的是rails 4.2.4和capybara 2.5.0

2 个答案:

答案 0 :(得分:0)

经过一些进一步的调查后,这个错误实际上是将selenium-webdriver从版本2.45.0升级到2.48.1引起的。我没有足够的时间来研究宝石中的根本原因。

答案 1 :(得分:0)

你必须等到水豚进行点击操作。

所以,

<强> 1 即可。使用sleep

示例sleep 5等待5秒

<强> 2 即可。使用

更改水豚中的默认等待时间
 `Capybara.default_wait_time = some_value`