Что такое XPath и для чего он используется в автоматизации тестирования?

«Что такое XPath и для чего он используется в автоматизации тестирования?» — вопрос из категории Автоматизация тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

XPath (XML Path Language) — это язык запросов для навигации по узлам XML- или HTML-документа. В автоматизации тестирования (например, с Selenium) он применяется для поиска элементов в DOM веб-страницы.

Основные виды выражений:

  • Абсолютный путь: Начинается с корня (/). Хрупкий.
    /html/body/div[1]/form/input
  • Относительный путь: Начинается с //. Ищет элемент в любом месте документа.
    //input[@id='username']

Полезные функции и операторы:

//button[contains(@class, 'btn-primary')]  // Кнопка, чей класс содержит подстроку
//a[text()='Log Out']                     // Ссылка с точным текстом
//div[starts-with(@id, 'user_')]          // Div, чей ID начинается с 'user_'
//input[@type='submit' and @disabled]     // Комбинация условий
//ul/li[last()]                           // Последний элемент в списке
Сравнение с CSS-селекторами: Критерий XPath CSS-селектор
Поиск по тексту Да (text()). Нет.
Навигация вверх Да (родитель ..). Нет.
Производительность Может быть медленнее. Обычно быстрее.
Читаемость Может быть сложным. Чаще проще.

Рекомендация: Используйте XPath, когда нужна сложная логика поиска (например, по тексту или сложным отношениям элементов). Для простых случаев предпочтительнее стабильные CSS-селекторы или поиск по ID и data-атрибутам (например, data-testid).