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