2014-02-18 1 views
3

Я хочу получить самого близкого предка WebElement с некоторым атрибутом.Xpath/Получение самого близкого предка с некоторым значением

Например:

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

У меня есть WebElment в Jave, который представляет div (id="2")

Как я могу получить наиболее близкий родителя, которые имеют атрибут value1?

В этом случае я бы получил элемент a с value1="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

Нет, это не так. Что, если есть «предыдущий-брат» с «значением @» только между родительским и текущим узлом? –

Смежные вопросы