Я использую xpath (1.0) для поиска элементов на странице HTML (для автоматизации приложения под Selenium, но это не имеет значения)
Вот пример, чтобы лучше понять следующее
<html>
<label for="xxx">My label xxx</label> <input type="text" id="xxx" placeholder="Value for xxx"><br>
<label for="yyy">My label yyy</label> <input type="text" id="yyy" placeholder="Value for yyy"><br>
<label for="zzz">My label zzz</label> <input type="text" id="zzz" placeholder="Value for zzz"><br>
<label for="test">My label test</label> <input type="text" id="test" placeholder="Value for test"><br>
<label for="pppppp">My label autre</label> <input type="text" id="pppppp" placeholder="Value for autre"><br>
</form>
Моя цель - найти входные данные, идентификатор которых соответствует искомой метке
Например, если я ищу Тест моей метки , для которого указан атрибутотносится к test Я должен быть в состоянии найти входные данные
Конечно, это просто, это только после ... Но в потрясающем приложении, над которым я работаю, они могут быть всовершенно разные уровни, что совершенно неприемлемо ...
Итак, вот мои разные тесты
Найти для ... легко!
//*[text()='My label test']/@for
Его значение, не беспокойтесьлибо
string(//*[text()='My label test']/@for)
С другой стороны, найти вход по его идентификатору ...
//input[@id='test']
//input[@id=string('test')]
Оттуда я сказал себе: мне просто нужно смешать 2 выше: D
//input[@id=string(//*[text()='My label test']/@for)]
Ну нет :( После различных поисков я попытался внедрить поиск, чтобы заставить его запустить поиск oНа этикетке раньше, например,
//input[@id[starts-with(.,string(//*[text()='My label test']/@for))]]
Но опять же, это не заботится о этикетке и приносит мне все входные данные страницы Вот это ... что еще ... нет, это все :(
У вас есть идеи для подачи?
Заранее спасибо за помощь