如何在Capybara中选择带有相邻文本的单选按钮?

时间:2014-10-08 03:05:35

标签: text radio-button capybara

水豚选择方法适用于单选按钮,旁边有标签标签,带有所需文字,如下所示:

<input id="rGEQr-real" type="radio" name="_pgcr6g7j"/>
<label id="rGEQr-cnt" class="z-radio-content" for="rGEQr-real">Web IDE Support</label>

page.choose('Web IDE Support')可以正常使用。

但对于这样的事情:

<form action="">
<input type="radio" value="male" name="sex"/>
MALE
<br/>
<input type="radio" value="female" name="sex"/>
FEMALE
</form>

没有标签标签,简单choose无法设置单选按钮。

我们如何在Capybara实现这一目标?

1 个答案:

答案 0 :(得分:1)

如果您需要通过名称,ID或标签文本以外的任何其他方式选择单选按钮,则需要:

  1. 找到单选按钮,通常使用find和CSS或XPath。
  2. 调用set方法
  3. 在这种情况下,您需要使用XPath,因为CSS选择器不支持按文本定位。 XPath需要检查以下兄弟文本节点是否为指定文本。这可以通过以下方式完成:

    # Select MALE
    page.find(:xpath, '//input[following-sibling::text()[1][normalize-space(.) = "MALE"]]').set(true)
    
    # Select FEMALE
    page.find(:xpath, '//input[following-sibling::text()[1][normalize-space(.) = "FEMALE"]]').set(true)