如何使用正则表达式检索链接文本在括号中具有数字的URL

时间:2011-03-18 19:36:23

标签: regex testing xpath selenium automation

我想从页面中检索所有链接,其中链接文本采用以下格式。

10 )现在我尝试使用以下方法,但它不起作用。

在同一页面上有许多类似的链接,其中数字不是顺序的,并且链接文本还有许多重复的数字,所以我想首先收集这样的web元素,然后使用属性我可以获取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]

使用Above XPath我可以获得第一个链接URL。现在我可以做什么来获取所有链接URL。

我尝试使用regexp:

//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 个答案:

答案 0 :(得分:2)

  

现在我可以做些什么来获取所有链接   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 :(得分:1)

您不需要在xpath定位器中包含/html/body/,如果页面结构发生更改,这将使其更加脆弱。试试这个更简单的xpath定位器:id('bd-cross')//li/a[2]