Подтвердить что ты не робот

Получить всех непосредственных детей и ничего глубже

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. У меня нет контроля над документами, и они сильно различаются.

4b9b3361

Ответ 1

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

body.findElement(By.xpath("*"));

Ответ 2

/html/body/*

Выберет только ближайшие дочерние элементы body.

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

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

Ответ 3

Здесь другой способ получить прямые дочерние элементы элемента:

element.findElement(By.xpath("./*"));

Ответ 4

child вместо descendant может помочь кому-то.