2013-08-27 42 views
4

我有以下HTML高級導航的webdriver

<div id="element1">welcome</div> 
    <div>username</div> 

現在的問題是,我必須選擇下一個div元素旁邊的「部件1」。我知道,我可以從父母構建xpath。但是我需要選擇一個非常接近元素的元素。怎麼可能?

回答

6

使用the following-sibling axis

這將選擇所有兄弟的element1節點之後<div>元素:

id('element1')/following-sibling::div[1] 

這將選擇element1之後的第一個兄弟節點:

id('element1')/following-sibling::div 

這在element1節點之後選擇第一同級<div>元件節點iff它是一個<div>元素:

id('element1')/following-sibling::*[1][local-name(.)='div'] 

所有這三個例子都會選擇你的元素(如果還有更多匹配的話可能會多一些),所以選一個最適合你的意圖。


請注意,您也可以使用a simple CSS selector執行所有操作。它相當於最後一個XPath。它會更快。

#element1 + div 
+0

'follow-sibling :: * [1]'表示*第一個兄弟* *對嗎? –

+1

@Babai是的。 'follow-sibling :: * [1] [local-name(。)='div']'接下來的第一個兄弟節點,然後測試節點名是否爲'div'。 –

+1

是的,這意味着我現在正在慢慢地獲得'xpath' .. :) –

3

可以使用following-sibling

driver.findElement(By.id("element1")).findElement(By.xpath("./following-sibling::div"));