2014-02-18 79 views
3

我想獲得具有某種屬性的最親密的祖先WebElementXpath /獲得具有一定價值的最親密的祖先

例如:

<div> 
    <i value1= "hello"> 
     <a value1 = "bye"> 
      <div id="2"> Hello </div></a></i></div> 

我有一個WebElmentJave呈現的div (id="2")

我怎樣才能獲得這些都是value1屬性最密切的家長嗎?

在這種情況下,我會得到元素avalue1="bye"

我嘗試下一個:divElement.findElement(By.xpath("/ancestor-or-self::*[@value1]"));但這不起作用。

回答

3

嘗試相對XPath表達式,即具有./開始不/

divElement.findElement(By.xpath("./ancestor-or-self::*[@value1][1]")); 
-1

你有沒有看看這個答案here。我相信這就是你需要的東西

WebElement element = driver.findElement(By.xpath("//div[@id='2']/preceding::*[@value1][1]")); 

這就是說,我不知道你爲什麼需要這樣做。你能詳細解釋一下嗎?

+0

這顯然是錯誤的。並非所有前面的元素都在祖先軸上(即「父母」)。此外,掃描''元素根本沒有幫助。 –

+0

該問題要求直接家長。 '之前'會給下一個祖先。 ''事情是我的錯誤,我糾正了 – nilesh

+0

不,它不。如果在父節點和當前節點之間有'@ value'的前同位體? –