Ответ 1
("*")
предоставляет все дочерние элементы контекста node. Поэтому используйте:
body.findElement(By.xpath("*"));
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
. У меня нет контроля над документами, и они сильно различаются.
("*")
предоставляет все дочерние элементы контекста node. Поэтому используйте:
body.findElement(By.xpath("*"));
/html/body/*
Выберет только ближайшие дочерние элементы body
.
Помните, что если вы скопируете все выбранные узлы, вы также скопируете их содержимое. Итак, если вы делаете copy-of
, в результирующий документ также будет создан table
.
Кроме того, я бы рекомендовал прочитать хотя бы основы XPath, вы задаете слишком много подобных вопросов.
Здесь другой способ получить прямые дочерние элементы элемента:
element.findElement(By.xpath("./*"));
child
вместо descendant
может помочь кому-то.