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