Я не могу понять различия между использованием //element
и /descendant::element
при выборе нескольких дочерних элементов базового элемента в XPath.Различия между // и/потомок в XPath, выбирая несколько дочерних объектов
Учитывая этот фрагмент кода HTML
<html>
<body>
<div class="popupContent">
<table>
<tr class="aclass"><td> Hello </td> <td> <input type="text" value="FIRST" /> </td></tr>
<tr class="aclass"><td> Goodbye </td> <td> <input type="text" value="SECOND" /> </td></tr>
</table>
</div>
</body>
</html>
нужно выбрать каждый input
на основе ее позиционирования в таблице. //div[@class='popupContent']//input[1]
это выбирает первый входной //div[@class='popupContent']//input[2]
это дает ошибку //div[@class='popupContent']/descendant::input[1]
это снова выбирает первый вход //div[@class='popupContent']/descendant::input[2]
это выбрать второй вход
Использование /descendant::input
делает то, что мне нужно: захватить все входы и позвольте мне выбрать положение.
Каким образом //
отличается? Почему он возвращает только первый элемент, а не тот, который после?
Я знаю this other question, но ответ в основном говорит, что они являются псевдонимами и указывают на документацию, которую я не могу понять и не имеет конкретного примера.
первое выражение '// div [@ class = 'popupContent'] // input [1]' возвращает оба входа. – splash58