Во время поиска элемента на странице не всегда можно привязаться к его уникальному атрибуту или тегу. На этот случай в XPath, есть функции позволяющие строить более сложные пути, часть из которых мы сегодня разберем:
- Contains
- Sibling
- Ancestor
- AND OR
- Parent
- Start with
CONTAINS
Используя функцию ‘contains’ мы можем находить элементы по частичному значению атрибута (@class, @id…) или текста ( text() ):

SIBLING
Для этого ключевого слова существует 2 функции:
- preceding-sibling:: — возвращает множество элементов на том же уровне, предшествующих текущему
- following-sibling:: — возвращает множество элементов на том же уровне, следующих за текущим

//th[text()='Industry']//following-sibling::td[1]
ANCESTOR
Функция ancestor:: — возвращает множество предков.
Например, можно найти таблицу зная значение одной из его ячеек (подняться вверх по дереву и взять ближайшую таблицу по индексу):

//th[text()='Industry']//ancestor::table[1]
AND OR
Используя AND и OR, мы можем поместить 2 условия в наше выражение XPath:
![]()
PARENT
Функция parent:: — возвращает предка на один уровень назад

START WITH
Используя эту функцию мы можем находить элементы по началу значению атрибута (@class, @id…) или текста ( text() ):

