我有一个动态生成的表单,如下所示:
Do you like Pizza?
[ ] Yes [ ] No
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>
我想和Capybara一起检查那些单选按钮。我怎样才能做到这一点?我并不总是知道单选按钮的id
,因为它们中有一些,当我也询问爆米花和鸡肉时,我不想依赖于了解它们的顺序。
有没有办法做某事......
field = find_label("Do you like pizza?").parent('field')
yes = field.find_label('Yes')
yes.click
答案 0 :(得分:8)
请注意,使用find
时,:text
选项会进行部分文本匹配。因此,您可以直接找到div:
find('div.field', :text => 'Do you like Pizza?').choose('Yes')
(同样使用choose
可以更轻松地选择单选按钮。)
答案 1 :(得分:2)
不错!
label = find('label', :text => "Do you like Pizza?")
parent = label.find(:xpath, '..')
parent.find_field("Yes").click