Xpath - поиск элемента из «подзапроса» - PullRequest
0 голосов
/ 22 мая 2019

Я использую 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))]]

Но опять же, это не заботится о этикетке и приносит мне все входные данные страницы Вот это ... что еще ... нет, это все :(

У вас есть идеи для подачи?

Заранее спасибо за помощь

...