#java #xpath #xpath-2.0
Вопрос:
Я хочу подсчитать количество lt;span class="show-for-sr"gt;
только в первом div.
Мой текущий xpath возвращает количество промежутков между несколькими div. Я попробовал ниже двух xpath, и они не работают. Почему, когда я передаю [1] для обозначения первого div, он все равно подсчитывает промежутки между всеми элементами div ?
1.
count(//div[@class='rating-container']//span[@class='show-for-sr'])
count(//div[@class='rating-container'][1]//span[@class='show-for-sr'])
HTML :
lt;divgt; lt;div class="cell small-12 medium-12 large-6"gt; lt;div class="rating-container"gt; lt;span class="text-blue-500 mr-8"gt; lt;div class="tt-container"gt;lt;button aria-label="open tooltip" class="button link" type="button" role="tooltip" aria-expanded="false"gt;Morningstar ratinglt;/buttongt;lt;/divgt; lt;/spangt; lt;spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;/spangt; lt;/divgt; lt;/divgt; lt;div class="cell mb-32"gt; lt;p class="intro morningstarInfo text-center-mob"gt;Morningstar Ratinglt;supgt;TMlt;/supgt; (relative to category) lt;/pgt; lt;table class="table striped" id="morningstar-info-table"gt; lt;thead class=""gt; lt;trgt; lt;th scope="col" id="year" class=""gt;Yearlt;/thgt; lt;th scope="col" id="morningstar return" class=""gt;Morningstar returnlt;/thgt; lt;th scope="col" id="morningstar risk" class=""gt;Morningstar risklt;/thgt; lt;th scope="col" id="morningstar rating" class=""gt;Morningstar ratinglt;/thgt; lt;/trgt; lt;/theadgt; lt;tbodygt; lt;trgt; lt;tdgt;3 - yearlt;/tdgt; lt;tdgt;Highlt;/tdgt; lt;tdgt;Lowlt;/tdgt; lt;tdgt; lt;div class="rating-container"gt;lt;span class="text-blue-500 mr-8"gt; lt;/spangt;lt;spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;/spangt;lt;/divgt; lt;/tdgt; lt;/trgt; lt;trgt; lt;tdgt;5 - yearlt;/tdgt; lt;tdgt;Highlt;/tdgt; lt;tdgt;Lowlt;/tdgt; lt;tdgt; lt;div class="rating-container"gt;lt;span class="text-blue-500 mr-8"gt; lt;/spangt;lt;spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;/spangt;lt;/divgt; lt;/tdgt; lt;/trgt; lt;trgt; lt;tdgt;Overalllt;/tdgt; lt;tdgt;Highlt;/tdgt; lt;tdgt;Lowlt;/tdgt; lt;tdgt; lt;div class="rating-container"gt;lt;span class="text-blue-500 mr-8"gt; lt;/spangt;lt;spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;span class="icon fil-icon star-grey fil-icon-star-filled"gt;lt;span class="show-for-sr"gt;star-filledlt;/spangt;lt;/spangt;lt;/spangt;lt;/divgt; lt;/tdgt; lt;/trgt; lt;/tbodygt; lt;/tablegt; lt;/divgt; lt;/divgt;
Ответ №1:
Вместо
count(//div[@class='rating-container'][1]//span[@class='show-for-sr'])
используйте это
count((//div[@class='rating-container'])[1]//span[@class='show-for-sr'])
Вы должны обернуть весь div в индексирование.