2016-04-21 86 views
0

我有這樣的結構:查找元素的硒兄弟姐妹的webdriver

<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(); 

我收到了異常元素未找到。我認爲這些跨度是兄弟姐妹?!任何人都可以在這種情況下幫助我。謝謝

回答

0

<span>的不是兄弟姐妹。如果<span>是兄弟姐妹,他們必須相鄰。

例如:

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

在這種情況下,他們是兄弟,你的選擇會工作。

實際上是兄弟姐妹的元素是<div> s。

,可以爲你工作中的XPath,將是:

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

我試過你的建議,但我仍然有異常:無法找到元素... – Ragnarsson

0

我有例外元素是找不到的。我認爲這些跨度是兄弟姐妹?

這兩個跨度不是同級 - 他們是不同元素的孩子,不能兄弟姐妹。

相反的following-sibling,您可以使用following軸:

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

或者,你可能會得到一個包含spanTextA文本,然後div元素得到它的下面的兄弟:

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

我試過你的建議,但我仍然得到異常:無法找到元素... – Ragnarsson

+0

@LouisT好吧,那麼還有一些我們錯過了。這個元素是否在iframe中? – alecxe

+0

它不在iframe中,只是純粹的HTML和很多div標籤。儘管我沒有使用xpath,但是我做了一個解決方法,它完成了這項工作。但是,當然,我想知道爲什麼它不適用於xpath和後續兄弟。謝謝你的幫助。 – Ragnarsson