Изменение XPath для работы с элементом <tbody><tr>

Ответ дан с помощью GPT-4o Mini от GPT4oMini.app

Вопрос:

переделай xpath //div[contains(text(),'Пшеница')]//following::table[1]//tr/td[position() = //div[contains(text(),'Пшеница')]//following::table[1]//th[text()='Базис']/position()], чтобы он работал в элементе <tbody><tr> <td style="padding:5px;"> Юг Руси, АО </td> <td>пшеница 3 класса протеин 15,3% и выше, клейк. 23%, натура 770г/л, сорн. примесь 2%, зерн. примесь 5%</td> <td>

Ответ:

Чтобы ваш XPath работал с элементом <tbody><tr>, вам нужно немного изменить его, чтобы он корректно находил нужные элементы в таблице. Предположим, что вы хотите получить значение из ячейки, которая соответствует определенной позиции в строке таблицы, где заголовок равен "Базис".

Вот пример, как можно переписать ваш XPath:

//div[contains(text(),'Пшеница')]//following::table[1]//tbody/tr/td[position() = //div[contains(text(),'Пшеница')]//following::table[1]//th[text()='Базис']/position()]/following-sibling::td[1]]

В этом XPath:

  1. Мы ищем div, содержащий текст "Пшеница".
  2. Затем находим первую таблицу, следующую за этим div.
  3. Внутри этой таблицы мы обращаемся к элементу <tbody>, а затем к строкам <tr>.
  4. Мы используем position() для получения позиции заголовка "Базис" и находим соответствующую ячейку <td>.

Обратите внимание, что following-sibling::td[1] используется для получения следующей ячейки после той, которая соответствует заголовку "Базис". Если вам нужно получить конкретную ячейку, измените индекс в following-sibling::td[n] на нужный вам.