我有一个使用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 %>
当我使用浏览器时页面工作正常,但当我尝试用Capybara检查时,例如:
check('organisation_cause_ids_1')
并尝试了很多这样的变化。
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"
Simple Form生成的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>
...
编辑:问题是由于&#39;原因&#39;的延迟加载。我是用工厂创建的。它们没有被创建,所以页面没有复选框。
答案 0 :(得分:1)
试试这个
find_by_id('organisation_cause_ids_1').find("checkbox[value='1']").select_option
或者可能是这个
find(:css, ".check_boxes[value='1']").set(true)