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

Why is javascript not checking my checkbox?

我正在尝试测试一个简单的 header 复选框检查 table 中的所有复选框。

测试如下:

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

有效。

我测试了其他几个选择器,它们几乎都具有相同的效果。我不想添加睡眠语句来让这样的事情通过。我一定是做错了什么。

当我 运行 没有睡眠子句的测试时,它似乎找到了控件(它被突出显示),但它没有被检查。请参阅屏幕截图了解我的意思。

我的问题是为什么会这样,我该如何解决我的问题?

注意我使用的是 rails 4.2.4 和水豚 2.5.0

经过进一步调查,该错误实际上是由将 selenium-webdriver 从版本 2.45.0 升级到 2.48.1 引起的。我没有足够的时间调查 gem.

中的根本原因

您必须等到水豚执行点击操作。

所以,


1。使用 sleep

示例 sleep 5 等待 5 秒


2。使用

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