Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Capybara进行的测试找不到使用简单表单关联创建的复选框_Ruby On Rails_Capybara_Simple Form - Fatal编程技术网

Ruby on rails 使用Capybara进行的测试找不到使用简单表单关联创建的复选框

Ruby on rails 使用Capybara进行的测试找不到使用简单表单关联创建的复选框,ruby-on-rails,capybara,simple-form,Ruby On Rails,Capybara,Simple Form,我有一个使用简单表单创建的表单 <%= simple_form_for @organisation do |f| %> <div class="form-inputs"> <%= f.association :causes, as: :check_boxes %> <div class="form-actions"> <%= f.button :submit %> </div> <% end

我有一个使用简单表单创建的表单

<%= simple_form_for @organisation do |f| %>
  <div class="form-inputs">
    <%= f.association :causes, as: :check_boxes %>
  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>
并且已经尝试了很多不同的方法,例如

find(:xpath , '//*[@id="organisation_cause_ids_1"]').set(true)
find("organisation_cause_ids_1").check
这些总是给出一个错误:

 Failure/Error: check('organisation_cause_ids_1')
 Capybara::ElementNotFound:
   Unable to find checkbox "organisation_cause_ids_1"
简单表单生成的HTML为:

 <div class="input check_boxes optional organisation_causes">
   <label class="check_boxes optional">Causes</label>
   <span class="checkbox">
     <label for="organisation_cause_ids_1" name="organisation[cause_ids]">
     <input class="check_boxes optional" id="organisation_cause_ids_1" name="organisation[cause_ids][]" type="checkbox" value="1" />Cause A</label>
   </span>
   <span class="checkbox">
     <label for="organisation_cause_ids_2" name="organisation[cause_ids]">
     <input class="check_boxes optional" id="organisation_cause_ids_2" name="organisation[cause_ids][]" type="checkbox" value="2" />Hunger</label>
   </span>
  ...

原因
引起
饥渴
...
编辑:这个问题是由于我用工厂创建的“原因”的延迟加载造成的。没有创建它们,因此页面没有复选框。

尝试使用此选项

find_by_id('organisation_cause_ids_1').find("checkbox[value='1']").select_option
find(:css, ".check_boxes[value='1']").set(true)
或者用这个

find_by_id('organisation_cause_ids_1').find("checkbox[value='1']").select_option
find(:css, ".check_boxes[value='1']").set(true)

谢谢,但在这两个方面都有相同的错误:(Capybara::ElementNotFound:找不到css)嗯,我尝试了第二种解决方案,对我来说成功了。我有capybara 2.1.0和rspec rails 2.14,谢谢Panczo。我最终发现这是我工厂的问题/在运行测试时延迟加载原因。因此在运行测试时没有显示复选框。我应该在测试期间转储页面以检查earlieR