переделай xpath //div[contains(text(),'Пшеница')]//following::table[1]//tr/td так, чтобы он выбирал только тот td, который соответствует th "Базис" в элементе
<table class="table"><thead><tr><th style="white-space: nowrap;">Базис</th><th style="white-space: nowrap;">Номенклатура</th><th style="white-space: nowrap;">Цена без НДС</th><th style="white-space: nowrap;">С НДС</th></tr></thead><tbody><tr><td style="padding:5px;">Юг Руси, АО</td><td>пшеница 3 класса протеин 15,3% и выше, клейк. 23%, натура 770г/л, сорн. примесь 2%, зерн. примесь 5%</td></tr></tbody></table>Чтобы выбрать только тот элемент <td>
, который соответствует заголовку <th>
"Базис" в указанной таблице, можно использовать следующий XPath:
//div[contains(text(),'Пшеница')]//following::table[1]//th[text()='Базис']/parent::tr/following-sibling::tr/td[1]
Этот XPath делает следующее:
<div>
, содержащий текст "Пшеница".<div>
.<th>
с текстом "Базис".<tr>
, чтобы получить строку, содержащую заголовок.following-sibling::tr
, чтобы выбрать все строки, следующие за этой строкой.<td>
в каждой из этих строк, который соответствует заголовку "Базис".Если вам нужно выбрать только первый <td>
в первой строке после заголовка, вы можете использовать:
//div[contains(text(),'Пшеница')]//following::table[1]//tr[td[preceding-sibling::th[text()='Базис']]]/td[1]
Этот XPath выбирает только первый <td>
в строке, которая содержит <td>
, соответствующий заголовку "Базис".