Выберите элемент с изменяющейся строкой идентификатора, используя XPath - PullRequest
1 голос
/ 18 декабря 2011

У меня есть элемент управления textarea с идентификатором, который выглядит примерно так:

<textarea id="NewTextArea~~51887~~1" rows="2"/>

И xpath, который работал раньше, был

//textarea[@id, "NewTextArea~~51887~~1"]

Но теперь часть идентификатора '51887' стала разнообразной (меняющейся каждый раз), поэтому мне нужно выбрать элемент NewtextArea ~~ * ~~ 1 без фактического указания номера. Есть ли способ, которым я могу подстановить часть строки, чтобы она соответствовала определенному шаблону? Я попытался использовать начало и конец, но не смог заставить его работать:

//textarea[starts-with(@id, 'NewTextArea~~') and ends-with(@name, '~~1')]

Не берите в голову, есть и другие поля с разницей в числе на конце.

Любой совет или руководство будет принята с благодарностью:)

1 Ответ

1 голос
/ 18 декабря 2011

Я попытался использовать начало и конец, но не смог заставить его работать:

//textarea[starts-with(@id, 'NewTextArea~~') and ends-with(@name, '~~1')]

ends-with() доступна в качестве стандартной функции только в XPath 2.0, и вы, похоже, используете XPath 1.0 .

Используйте

//textarea
   [starts-with(@id, 'NewTextArea~~')
  and
   substring(@id, string-length(@id) - 2) = '~~1'
   ]

Объяснение

См. Ответ на этот вопрос, чтобы узнать, как реализовать ends-with() в XPath 1.0:

https://stackoverflow.com/a/405507/36305

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...