XPath для текста на основе содержимого в предыдущем элементе? - PullRequest
1 голос
/ 05 апреля 2019
<div class="profile-row">

        <div class="profile-cell">

            <h4 class="">Telephone</h4>

        </div>

        <div class="profile-cell">

            <p class="">0207 289 2981</p>

        </div>

    </div>

Я пытаюсь получить номер телефона: 0207 289 2981

Использование вариантов:

//h4[starts-with(., 'Telephone')]/following-sibling::div[@class='profile-cell']

и

//h4[starts-with(., 'Telephone')]/following-sibling::div/p

Кажется, не могу это схватить.

Ответы [ 3 ]

0 голосов
/ 05 апреля 2019

Братья и сестры имеют общего родителя; h4 и p нет.

Вместо этого используйте following::.

Это XPath,

//h4[.='Telephone']/following::p[1]/text()

выберет текст следующего за p из целевого h4.

0 голосов
/ 05 апреля 2019

Выбирает фактическое число:

//p[@class='']/text()
0 голосов
/ 05 апреля 2019

Вот xpath.

(//div[@class='profile-cell']//p)[last()]

Проблема в вашем xpath в том, что у h4 нет родного элемента div.поэтому вам нужно получить доступ к родительскому div и затем выбрать родственный div, как показано ниже.

//h4[starts-with(., 'Telephone')]/parent::div/following-sibling::div[@class='profile-cell']/p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...