2010-01-05 2 views
1
page.getByXPath("//*[@href='http://www.example.com/index.do/abc/1_*'"); 

Нужно ли мне избегать любых символов?Правильно ли это xpath?

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

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 

ответ

4

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

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

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

//*[starts-with(@href,'http://www.example.com/index.do/abc/1_')] 
+1

Да, именно поэтому это в моем ответе наряду с 'contains'. – Welbog

0

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

В этом случае, я предлагаю сделать 'содержит' тест на приставку

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

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

0

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

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

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

+0

Я использую java 1.6 – mrblah

Смежные вопросы