Как использовать Regexp для получения URL, где текст ссылки имеет номер в скобках - PullRequest
0 голосов
/ 18 марта 2011

Я хочу получить все ссылки со страницы, где текст ссылки имеет следующий формат.

( 10 ) Теперь я попробовал использовать метод ниже, но он не работал.

На той же странице доступно много похожих ссылок, где число не в последовательности, а также много повторяющихся номеров для текста ссылки, поэтому я хочу сначала собрать такой веб-элемент, а затем, используя атрибут, получить URL-адрес.

Похоже на эту страницу. http://www.dmoz.org/search?q=surat&start=0&type=more&all=no&cat=

Я хочу получить ссылку после того, как мы нажмем эти цифры в скобках.

List<WebElement> catLinks = driver.findElements(By.xpath("//html/body/div[@id='doc']/div[@id='bd-cross']/ol/li[1]/a[2]"));  
for (WebElement catLink : catLinks) {
    System.out.println(nLink + ". " + catLink.getAttribute("href")); 
}

Ссылка XPath:

//html/body/div[@id='doc']/div[@id='bd-cross']/ol/li[***1***]/a[2]

Используя выше XPath, я могу получить URL первой ссылки. Теперь, что я могу сделать, чтобы получить все ссылки URL.

Я пытался использовать регулярное выражение:

//html/body/div[@id='doc']/div[@id='bd-cross']/ol/li[\\d\\.\\*]/a[2]

Но это не работает.

Я также пытался использовать метод ниже.

List<WebElement> catLinks = driver.findElements(By.linkText("\\d\.\*"));  
for (WebElement catLink : catLinks) {
    System.out.println(nLink + ". " + catLink.getAttribute("href")); 
}

но не повезло.

Ответы [ 2 ]

2 голосов
/ 18 марта 2011

Теперь, что я могу сделать, чтобы получить все ссылки URL.

Я пытался использовать регулярное выражение:

//html/body/div[@id='doc']/div[@id='bd-cross']/ol/li[\\d\\.\\*]/a[2]

Nop. Использование:

/html/body/div[@id='doc']/div[@id='bd-cross']/ol/li/a[2]

Меньше значит больше.

1 голос
/ 19 марта 2011

Вам не нужно включать /html/body/ в локатор xpath, это только сделает его более хрупким, если изменится структура страницы.Попробуйте это намного проще xpath locator: id('bd-cross')//li/a[2]

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