Pulsate - On
Waves - On

XPath / CSS

XPath и CSS — это локаторы, которые используются для нахождения элементов на веб-странице.

Разница между ними:
CSS — проще в использовании и быстрее работает в большинстве браузеров, но XPath обладает большей гибкостью, позволяя выполнять сложные запросы, например, поиск по тексту.

Синтаксис:
XPath использует точные пути к элементам, начиная от родительских элементов и доходя до конкретного элемента.
CSS — использует селекторы для выбора элементов на основе их стиля и структуры.

Применение:
XPath — позволяет перемещаться по DOM-структуре, используя отношения между элементами.
CSS — удобен для быстрого выбора элементов по классу, ID или атрибутам.

Оси элементов: — определяют отношения между элементами, например, родитель (один элемент) и дети (несколько элементов).

Форматированный и составной XPath

Форматированный (абсолютный) XPath — путь начинается от корневого элемента и описывает полный путь к искомому элементу. Использует одинарный слэш /.

Составной (относительный) XPath — начинается с любого уровня DOM, позволяет искать элементы на основе их положения относительно других. Использует двойной слэш //.

Операторы contains / not contains

Contains и not contains — функции XPath для поиска элементов, содержащих или не содержащих определённый текст или подстроку.

1. contains:
Используется для поиска элементов, содержащих часть текста.
//тег[contains(@атрибут, 'текст')]

2. not contains:
Используется для поиска элементов, не содержащих указанную подстроку.
//a[not(contains(@href, 'example.com'))]

Разница между // и /*

// — используется для поиска всех элементов во всём документе, начиная с любого уровня.
/* — ищет все дочерние элементы только от одного указанного родителя, проходя вниз на один уровень.

Оператор normalize-space

Normalize-space — функция XPath, которая удаляет начальные, конечные и повторяющиеся пробелы в строке.

Использование ancestor и descendant

Ancestor — возвращает всех предков элемента вплоть до корневого.
Descendant — возвращает всех потомков элемента, включая дочерние, внуков и т.д.

Поиск по тексту

Для поиска по тексту можно использовать функцию contains или точный поиск с помощью text().

Примеры:
//div[contains(text(), 'часть текста')]
//div[text() = 'полный текст']

Поиск по содержанию атрибутов

Для поиска элемента по содержимому его атрибута используется следующая конструкция:
//element[@attribute='value']

Обозначения:

  • // — поиск во всём документе.
  • element — имя элемента.
  • @attribute — атрибут элемента.
  • 'value' — значение атрибута.