从Capybara的标签中选择一个单选按钮

use*_*643 4 capybara

我有一个动态生成的表单,如下所示:

Do you like Pizza?
[ ] Yes   [ ] No
Run Code Online (Sandbox Code Playgroud)

HTML看起来像这样:

<form>
  <div class="field">
    <label>Do you like Pizza?</label>
    <input
      type="radio" value="true" 
      id="reply_set_replies_attrs_0_pizza_true"
      name="reply_set[replies_attrs][0][pizza]">
    </input>
    <label for="reply_set_replies_attrs_0_pizza_true">Yes<label>
    <input
      type="radio" value="false" 
      id="reply_set_replies_attrs_0_pizza_false"
      name="reply_set[replies_attrs][0][pizza]">
    </input>
    <label for="reply_set_replies_attrs_0_pizza_false">No<label>
  </div>
</form>
Run Code Online (Sandbox Code Playgroud)

我想用Capybara检查那些单选按钮.我怎样才能做到这一点?我并不总是知道id单选按钮的s,因为它们中有一些,当我也问Popcorn和Chicken时,我不想依赖于了解它们的顺序.

有没有办法做某事......

field = find_label("Do you like pizza?").parent('field')
yes = field.find_label('Yes')
yes.click
Run Code Online (Sandbox Code Playgroud)

Jus*_* Ko 8

请注意,使用时find,该:text选项会进行部分文本匹配.因此,您可以直接找到div:

find('div.field', :text => 'Do you like Pizza?').choose('Yes')
Run Code Online (Sandbox Code Playgroud)

(还可以使用choose单选按钮进行选择.)