2013-08-27 41 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"));