如何轻松取消选中Capybara的所有复选框

ber*_*kes 4 ruby-on-rails capybara

我有一个复选框列表,使用创建collection_check_boxes.

在功能/集成测试中使用Capybara进行测试时,想要通过取消选中它们来"规范化"页面,然后检查我要检查的页面:

within_fieldset('Product') do
  # Reset all checkboxes for a level playingfield.
  # What to do?

  # Mark checkboxes for products enabled
  products.each do |product|
    check products
  end
end
Run Code Online (Sandbox Code Playgroud)

这是一个所谓的PageObject,因此我想要一些通用:如果在实际测试中,我会知道哪些字段被检查并取消选中它们.但是这个更通用的助手没有这样的知识.

我已经尝试了一些方面的东西find('input[type=checkbox]').all {|checkbox| uncheck(checkbox) },它应该可以工作,但对于手头的任务似乎相当复杂,不是吗?

uncheck_all()?在Capybara,我没有错过一些吗?在开始填充表格之前,将资本中的表格"重置"为空白状态是一种常见的模式吗?

Vis*_*wal 7

试试这个:

all('input[type=checkbox]').each do |checkbox|
 if checkbox.checked? then 
  checkbox.click
 end
end
Run Code Online (Sandbox Code Playgroud)