Это может быть полезно для кого-то еще: Использование этого образца 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. Это будет работать для элементов на одном уровне, имеющих одного и того же родителя.