Как написать Xpath для следующего Div с помощью Sibling

Я хочу прочитать налоговую цену, используя концепцию родного брата, поэтому я написал ниже XPath, но это не работает

Мой код:

//div[@class='grid_3 d-grid_10']//label[contains(text(), 'Tax')]/following-sibling::div

HTML:

<div class="grid_3 d-grid_10"> 
    <label class="m-confirmation-modal-print-detail-capgrey"> Tax:</label>
</div> 
<div class="grid_1 d-grid_2"> 
    <label class="m-confirmation-modal-print-price text-align-right"> $10.50</label> 
</div>

person Smart coder    schedule 20.11.2018    source источник
comment
Какой элемент вы пытаетесь найти? опубликовать html   -  person Guy    schedule 20.11.2018


Ответы (3)


Чтобы прочитать Цена налога, т. е. 10,50 долларов США, используя текст Tax в узле-предке, вам нужно найти узел <label> с текстом Tax. : сначала. Затем по отношению к этому узлу вам нужно найти следующий узел <div>, у которого есть потомственный узел, содержащий требуемый текст, т.е. 10,50$, и для этого вы можете использовать следующее решение:

  • XPath:

    //label[@class='m-confirmation-modal-print-detail-capgrey' and contains(.,'Tax')]//following::div[1]/label
    
person DebanjanB    schedule 20.11.2018

Второй <div> является братом первого, а не дочернего <label>. Сначала вам нужно вернуться к родительскому элементу <div>, используя .. или parent::div.

//div[@class='grid_3 d-grid_10']//label[contains(text(), 'Tax')]/parent::div/following-sibling::div

Как было предложено в комментариях, вы можете упростить его, начав xpath с «Налога» <label>

//label[contains(text(), 'Tax')]/parent::div[@class='grid_3 d-grid_10']/following-sibling::div
person Guy    schedule 20.11.2018
comment
Этот тип рекурсии: parent->child->parent можно упростить: //label[contains(text(), 'Tax')]/parent::div[@class='grid_3 d-grid_10']/following-sibling::div - нет необходимости указывать один и тот же родитель div дважды - person Andersson; 20.11.2018

Вы можете использовать это:

//label[contains(text(), 'Tax')]/../following-sibling::div
person Mahsa kia-rad    schedule 20.11.2018