Этот xpath выглядит правильно? - PullRequest
1 голос
/ 05 января 2010
page.getByXPath("//*[@href='http://www.example.com/index.do/abc/1_*'");

Нужно ли бежать от каких-либо персонажей?

Я пытаюсь получить все ссылки на страницу с шаблоном:

http://www.example.com/index.do/abc/1_

так что все они должны быть восстановлены:

http://www.example.com/index.do/abc/1_asdf-asdfasdf
http://www.example.com/index.do/abc/1_223
http://www.example.com/index.do/abc/1_as.php
http://www.example.com/index.do/abc/1_2222233

Ответы [ 3 ]

4 голосов
/ 05 января 2010

В XPath нет подстановочных знаков. Вы хотите что-то вроде этого:

page.getByXPath("//*[contains(@href,'http://www.example.com/index.do/abc/1_')]");

Это зависит от функции contains . Вы также можете использовать функцию starts-with:

//*[starts-with(@href,'http://www.example.com/index.do/abc/1_')]
0 голосов
/ 05 января 2010

Проверьте, поддерживает ли ваша библиотека XPath starts-with(string1,string2) и используйте:

page.getByXPath("//*[starts-with(@href, 'http://www.example.com/index.do/abc/1_')");

Кроме того, вы не можете заменить * на a?

0 голосов
/ 05 января 2010

Если вы используете XPath 1.0, вы не можете делать совпадения (или регулярные выражения) таким образом. (Обновление до 2.0 может позволить это)

В этом случае я бы предложил выполнить тестовый «префикс» для префикса

// a [содержит (@href, 'http://www.example.com/index.do/abc/1_')]

(обратите внимание, я ограничил выбор только тегами)

...