我想从页面中检索所有链接,其中链接文本采用以下格式。
( 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"));
}
但没有运气。
答案 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]