Получить всех непосредственных детей и ничего глубже - PullRequest
26 голосов
/ 06 января 2011
WebElement body = browser.findElement(By.xpath("//body"));

body.findElement(By.xpath("")); // I want to get all child elements 
                                // inside body, but nothing deeper.

Пример документа.

<html>
  <body>
    <div>
    </div>
    <span>
      <table>
      </table>
    </span>
  </body>
</html>

Ожидаемый результат - div и span.У меня нет контроля над документами, и они сильно различаются.

Ответы [ 4 ]

30 голосов
/ 06 января 2011

("*") дает все дочерние элементы узла контекста. Так что используйте:

body.findElement(By.xpath("*"));
6 голосов
/ 06 января 2011
/html/body/*

Выбирает только непосредственные дочерние элементы body.

Помните, что если вы копируете все эти выбранные узлы, вы также копируете их содержимое.Таким образом, если вы сделаете copy-of, к полученному документу также будет добавлено table.

Также я бы рекомендовал прочитать хотя бы основы XPath, вы задаете слишком много похожих вопросов.

4 голосов
/ 20 марта 2014

Вот еще один способ получить прямые потомки элемента:

element.findElement(By.xpath("./*"));
1 голос
/ 30 апреля 2016

Может помочь child вместо descendant.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...