使用selenium webdriver查找元素的兄弟姐妹

时间:2016-04-21 15:36:19

标签: java selenium xpath selenium-webdriver automated-tests

我有这样的结构:

<div>
   <div>
      <span class="">TextA</span>
   </div>
   <div>
      <span class="">TextB</span>
   </div>
</div>

我可以找到TextA的元素跨度,并且从那里,我想找到带有textB的跨度,然后点击它(不能单独找到它)。所以我像这样使用xpath:

webDriver.findElement(By.xpath("//span[contains(.,'TextA')]/following-sibling::span")).click();

我得到异常元素未找到。我以为这些跨度是兄弟姐妹?!在这种情况下,任何人都可以帮助我感谢

2 个答案:

答案 0 :(得分:1)

<span>不是兄弟姐妹。如果<span>是兄弟姐妹,他们必须相邻。

例如:

<div>
   <div>
      <span class="">TextA</span>
      <span class="">TextB</span>
   </div>
</div>

在这种情况下,他们是兄弟姐妹,你的选择器会起作用。

实际上是兄弟姐妹的元素是<div>

可能适合您的xpath将是:

//span[contains(.,'TextA')]/../following-sibling::div/span

答案 1 :(得分:1)

  

我得到异常元素未找到。我以为这些跨度是兄弟姐妹?

这两个跨度不是兄弟姐妹 - 他们是不同元素的孩子,不能是兄弟姐妹。

您可以使用following轴代替following-sibling

//span[contains(.,'TextA')]/following::span

或者,您可能会获得包含带有div文字的span的{​​{1}}元素,然后让它跟随兄弟:

TextA