Как написать XPath для нескольких родных тегов div - PullRequest
2 голосов
/ 09 апреля 2020

Я пишу XPath для следующего фрагмента кода:

<div class="line info">
        <div class="unit labelInfo TextMdB">First</div>
        <div class="unit lastUnit">
                <div class="line TextMd">Second</div>

Как я могу получить второй тег div, используя первый тег div, используя концепцию родственного элемента? Я написал свой XPath как:

//div[contains(text(), 'First')]/following-sibling::div[2][contains(text(),'Second')]

Но он не работает. Как мне добраться до «второго» с помощью «первого» тега div? Я ценю вашу помощь.

1 Ответ

2 голосов
/ 09 апреля 2020
//div[contains(text(), 'First')]/following-sibling::div[2]
--------------------------------------------------------^

На данный момент нет второго «следующего брата». <div>, содержащий текст 'Second', является дочерним из div.unit.lastUnit.

Это означает

//div[contains(text(), 'First')]/following-sibling::div[1]/div[contains(text(),'Second')]

Другой способ, который в меньшей степени зависит от структуры документа: "Я хочу, чтобы первое следующее <div> содержало текст 'Second'" :

(//div[contains(text(), 'First')]/following::div[contains(text(),'Second')])[1]

, но это может вернуть результаты, которые вы сделали не хочу, именно , потому что уделяет меньше внимания структуре документа.

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