Это может быть полезно для кого-то еще: Используя этот пример html
<div class="ParentDiv">
<label for="label">labelName</label>
<input type="button" value="elementToSelect">
</div>
<div class="DontSelect">
<label for="animal">pig</label>
<input type="button" value="elementToSelect">
</div>
Если, например, я хочу выбрать элемент в том же разделе (например, div) в качестве метки, вы можете использовать это
//label[contains(., 'labelName')]/parent::*//input[@value='elementToSelect']
Это просто означает, что ищите метку (это может быть что-нибудь вроде a
, h2
) с именем labelName
.Перейдите к родителю этого ярлыка (например, div class="ParentDiv"
).Выполните поиск среди потомков этого родителя, чтобы найти любой дочерний элемент со значением elementToSelect
.При этом он не выберет второй elementToSelect
с DontSelect
div в качестве родителя.
Хитрость в том, что вы можете уменьшить области поиска для элемента, сначала перейдя к родителю, а затем выполнив поиск потомка этого элемента.родитель для элемента, который вам нужен.Другой синтаксис, такой как following-sibling::h2
, также может быть использован в некоторых случаях.Это означает, что следующий элемент h2
.Это будет работать для элементов того же уровня, имеющих одного и того же родителя.