这是网站代码:
<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]
我需要找到第一个标签,而不是强大。
我怎么能这样做?
答案 0 :(得分:2)
使用轴following
执行以下操作:
following
轴包含与上下文节点位于同一文档中的所有节点,这些节点位于文档顺序上下文节点之后,不包括任何后代和不包括 属性节点和命名空间节点。
xpath = './/div/strong[contains(., "static text")]/following::strong[1]'
@driver.find_element(:xpath, xpath)
答案 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"