1

我需要使用 capyvara 从选定单选按钮内的 span 标签中读取文本值

我有一个radio button后跟文本列表,括号中是它的计数。

例如:带有Thank You(82) 我想要的单选按钮是在括号内读取选定的单选按钮计数 82。

我使用了以下代码..但它不起作用

value=page.find(".cardFilterItemSelection[checked='checked'] + span.itemCount").text

并尝试使用 Xpath 但没有得到任何东西

 value=page.find(:xpath,"//input[@class = 'cardFilterItemSelection' and @checked = 'checked']/span[@class = 'itemCount']/text()")

怎么可能?

<label id="thankyou_label" for="thankyou_radio" class="itemName radio">
  <input checked="checked" tagtype="Occasion" value="Thank You" id="thankyou_radio" name="occasionGroup" class="cardFilterItemSelection" type="radio">
  <span class="occasion_display_name">
    Thank You 
  </span>
  <span class="itemCount">
    (82)
  </span>
</label>

<label id="spring_label" class="itemName radio" for="spring_radio">
  <input id="spring_radio" class="cardFilterItemSelection" type="radio" name="occasionGroup" value="Spring" tagtype="Occasion">
  <span class="occasion_display_name">
    Spring 
  </span>
  <span class="itemCount">
    (0)
  </span>
</label>
4

1 回答 1

11

我认为你在正确的轨道上。但是您不应该查询 span 包含的文本节点,而是查询 span 本身并使用 XPath

span = page.find(:xpath,"//input[@class = 'cardFilterItemSelection' and @checked = 'checked']/following-sibling::span[@class = 'itemCount']")
value = span.text

但是我个人发现 css 选择器更具可读性(除非您需要进行复杂的查询)

span = page.find(:css, 'input.cardFilterItemSelection[checked=checked] ~ span.itemCount')
value = span.text
于 2013-07-30T11:46:19.573 回答