В данном Xpath //div[contains(text(),'Пше')]//following::table[1]//tr/td[position() = count(//table/thead/tr/th[contains(text(),'Номенклатура')]/preceding-sibling::th)] есть ошибка в части [position() = count(//table/thead/tr/th[contains(text(),'Номенклатура')]/preceding-sibling::th)], найди ее
В вашем XPath выражении есть ошибка в части, где используется count(//table/thead/tr/th[contains(text(),'Номенклатура')]/preceding-sibling::th)
. Проблема заключается в том, что count()
возвращает числовое значение, а position()
возвращает позицию текущего узла в наборе узлов.
Чтобы исправить это, нужно убедиться, что вы сравниваете позицию текущего узла с числом, которое вы хотите использовать. В данном случае, если вы хотите получить ячейку, которая соответствует количеству предыдущих заголовков, вам нужно использовать position() - 1
, чтобы учесть, что position()
начинается с 1, а count()
возвращает количество узлов.
Вот исправленный вариант вашего XPath:
//div[contains(text(),'Пше')]//following::table[1]//tr/td[position() = count(//table/thead/tr/th[contains(text(),'Номенклатура')]/preceding-sibling::th) + 1]
Здесь мы добавили + 1
к count()
, чтобы правильно сопоставить позицию. Теперь выражение должно работать корректно.