我有以下代码:
HtmlPage searchPage = mainWebClient.getPage(searchUrl);
List<HtmlListItem> lis = searchPage.getByXPath("//div[@id='mainContent']//li[contains(@id, 'results-listing')]");
for (HtmlListItem li : lis) {
List<Object> linkXPath = li.getByXPath("//a[contains(@class, 'itemlink')]/@href");
}
在第四行中,我只想在li中而不是在整个页面中使用XPath搜索。如果我放在那里: searchPage.getByXPath(“ // a [包含(@class,'itemlink')] / @ href”); 结果将是相同的。如何不在整个文档中搜索,而仅在li中搜索?
答案 0 :(得分:1)
使用索引而不是每个索引。
searchPage.getByXPath("(//div[@id='mainContent']//li[contains(@id, 'results-listing')])[" + index + "]//a[contains(@class, 'itemlink')]/@href");
答案 1 :(得分:1)
您的问题来了,因为使用了absolute location path(基本上是从/
开始的位置路径)。
您需要相对位置路径。使用:
descendant::a[contains(@class, 'itemlink')]/@href
或缩写
.//a[contains(@class, 'itemlink')]/@href