Как искать с помощью xpath в данном элементе HTML? - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть следующий код:

    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");
    }

В четвертой строке я хочу искать с XPath только в li, а не по всей странице. Если я положу туда: searchPage.getByXPath ("// a [содержит (@class, 'itemlink')] / @ href"); результат будет таким же. Как искать не во всем документе, а только в li?

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Ваша проблема возникла из-за использования абсолютного пути местоположения (в основном, пути местоположения, начинающегося с /).

Вам нужен относительный путь местоположения.Используйте:

descendant::a[contains(@class, 'itemlink')]/@href

или с сокращениями

.//a[contains(@class, 'itemlink')]/@href
1 голос
/ 01 апреля 2019

Используйте индекс скорее для каждого.

searchPage.getByXPath("(//div[@id='mainContent']//li[contains(@id, 'results-listing')])[" + index + "]//a[contains(@class, 'itemlink')]/@href");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...