ruby - 从 span 标签中读取文本值

标签 ruby xpath cucumber capybara capybara-webkit

我需要使用 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>

最佳答案

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

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

关于ruby - 从 span 标签中读取文本值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17941474/

相关文章:

ruby-on-rails - Rails - 强制模型通过工厂方法创建

php - 获取 href 的 Xpath 表达式。不仅仅是 anchor 文本

java - 如何将 XPath 计算范围缩小到单个节点而不是 Java 中的整个文档?

ruby - 使用 Selenium 多次出现 "Basic Authentication"弹出窗口

javascript - 在 highcharts 中转义单引号

ruby-on-rails - Mongoid 发现不起作用?

cucumber - 在 capybara 中查找 ID 的两种方法 - 为什么一种失败而另一种失败?

ruby-on-rails - 使用 capybara 进行 cucumber 测试中的 cookies

ruby - 为什么 YAML 在字符串上抛出 float ArgumentErrors?

c# - 使用 xPath 获取 sibling