Как написать Xpath для следующего Div, используя Sibling - PullRequest
0 голосов
/ 20 ноября 2018

Я хочу прочитать Налоговую цену, используя концепцию брата, поэтому я написал ниже 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>

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

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

//label[contains(text(), 'Tax')]/../following-sibling::div
0 голосов
/ 20 ноября 2018

Чтобы прочитать Налоговую цену , т. Е. $ 10.50 с использованием текста Налог в узле-предке, необходимо найти узел <label> с текстом Налог: первый.Затем в отношении этого узла вам нужно найти следующий <div> узел, в котором есть узел-потомок, содержащий требуемый текст, т.е. $ 10.50 , и для достижения этого вы можете использовать следующее решение:

  • XPath:

    //label[@class='m-confirmation-modal-print-detail-capgrey' and contains(.,'Tax')]//following::div[1]/label
    
0 голосов
/ 20 ноября 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
...