选择拳头中的第二个div

时间:2014-01-27 14:03:06

标签: ruby selenium

这是网站代码:

<div>
 <strong>static text</strong>
</div>
<div>
  <strong>Text that I need</strong>
</div>

我需要使用第一个获得第二个强标记。没有任何独特的ID或类。 这些代码首先找到了,

@driver.find_element(:xpath, './/div/strong[contains(., "static text")]')
@driver.find_element(:xpath, './/strong[contains(., "static text")]')

但是对于使用following-sibling::*[1]我需要找到第一个标签,而不是强大。 我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

使用轴following执行以下操作:

  

following轴包含与上下文节点位于同一文档中的所有节点,这些节点位于文档顺序上下文节点之后不包括任何后代不包括 属性节点命名空间节点

xpath = './/div/strong[contains(., "static text")]/following::strong[1]'
@driver.find_element(:xpath, xpath)

Check here也。

答案 1 :(得分:0)

我建议使用CSS的nth-child伪选择器。请参阅“Selecting Nth-of-type in selenium”,其中我使用selenium写了这个特定的伪选择器。在您的情况下,您的选择器将是(假设这两个<div>的父级是<body>的直接子级:

@driver.find_element_by_css_selector('body div:nth-child(X) > strong')

X替换为您想要的任何索引。 1会引用第一个<strong> "static text",而2会引用第<strong>"text that i need"