Вот мой пример исходного HTML:
<!-- Many other elements above this -->
<div class="emf-div-field">
<span style="width:175px">
<input class="validate[required]" style="width:100%" value="" id="element_2" name="element_2" type="text">
<label for="element_2" class="emf-bottom-label emf-text-center">First</label>
</span>
<span style="width:125px">
<input class="validate[optional]" style="width:100%" value="" id="element_6" name="element_6" type="text">
<label for="element_6" class="emf-bottom-label emf-text-center">Middle</label>
</span>
<span style="width:175px">
<input class="validate[required]" style="width:100%" value="" id="element_3" name="element_3" type="text">
<label for="element_3" class="emf-bottom-label emf-text-center">Last</label>
</span>
</div>
<!-- Many other elements below this -->
Мне нужно, чтобы XPath выбрал элемент <input>
непосредственно перед элементом <label>
, чей innerText - «Первый». Элемент <input>
всегда является родственным элементом <label>
.
Это должен быть относительный выбор, основанный на <label>
innerText, потому что в общем случае эти операторы могут быть на многих разных уровнях.
Я пробовал это (и многие другие варианты), но ни один не работал:
//input[preceding-sibling::label[text() = "First"]]
Спасибо.