Лучшие практики выбора XPath-локаторов

Одним из самых важных аспектов тестирования пользовательского интерфейса (UI) с использованием таких инструментов, как Selenium, является выбор надежных локаторов для веб-элементов. XPath — мощный и гибкий способ поиска элементов, но при неосторожном использовании он может приводить к ошибкам. Следование лучшим практикам при написании XPath-выражений позволяет сделать ваши тесты стабильными, удобными для сопровождения и эффективными.

Друзья, поддержите нас вступлением в наш телеграм канал QaRocks. Там много туториалов, задач по автоматизации и книг по QA.

1. Предпочитайте относительный XPath абсолютному

Абсолютный XPath начинается от корня документа (/html/body/) и следует по прямому пути к целевому элементу. Если структура страницы изменится хотя бы немного (например, добавится новый <div>), ваш тест перестанет работать, так как весь путь нарушится.

2. Используйте уникальные атрибуты для поиска элементов

Уникальные атрибуты, такие как id или name, реже меняются и обеспечивают однозначное определение элемента. Если у элемента есть атрибут id или name, всегда предпочтительнее использовать его вместо сложных XPath-выражений.

3. Избегайте использования позиционной индексации (например, [1], [2] и т. д.)

Индексация основывается на позиции элементов внутри их родительского контейнера, а она легко может измениться. Например, добавление нового элемента в DOM может изменить позиции существующих элементов и привести к сбоям в тестах.

4. Осторожно используйте contains()

Функция contains() дает больше гибкости, но может сделать ваш локатор менее надежным. Лучше искать элементы с использованием точного совпадения уникальных атрибутов. Кроме того, contains() может замедлять производительность, если нужно обработать большой DOM.

5. Используйте normalize-space() для обработки пробелов

Функция normalize-space() позволяет игнорировать лишние пробелы в тексте, что делает XPath более гибким при поиске элементов.

6. Учитывайте производительность: используйте CSS-селекторы, если это возможно

XPath универсален, но он обычно работает медленнее, чем CSS-селекторы, особенно при большом и сложном DOM. Если элемент можно найти с помощью CSS-селектора, это будет более производительно.

7. Будьте осторожны с динамическими атрибутами

Некоторые сайты используют динамические атрибуты, такие как случайно сгенерированные id или class, которые меняются при каждом обновлении страницы. Старайтесь не полагаться на такие атрибуты при написании XPath.
Пример динамического атрибута: //input[@id='random12345']

8. Комбинируйте несколько атрибутов для точности

Иногда ни один атрибут сам по себе не является уникальным для идентификации элемента. В таких случаях можно комбинировать несколько атрибутов, чтобы сделать локатор более точным.

Например:

//button[@class='submit-btn' and @data-action='submit' and @type='submit']

Кроме того, можно искать стабильные атрибуты или родительские элементы со статическими свойствами и использовать от них относительный путь.

9. Осторожно используйте функцию text()

Функция text() полезна для поиска элементов с определенным текстом, но будьте осторожны, так как текст может часто меняться.

Пример удачного использования (если текст маловероятно изменится):

//div[text()='Пример текста']

10. Избегайте ненужного использования осей XPath

Оси XPath — это специальные ключевые слова, которые позволяют перемещаться по дереву DOM относительно выбранного элемента. Оси following-siblingprecedingancestor и другие, могут делать ваши локаторы сложными и замедлять их работу. Используйте их только при необходимости.

11. Делайте XPath максимально короткими и простыми

Короткие и простые XPath-выражения обычно быстрее и легче поддерживать.

12. Документируйте сложные XPath

Если вам необходимо использовать сложное XPath-выражение, добавьте комментарий, объясняющий, почему оно необходимо и какой элемент оно находит. Это облегчит дальнейшее сопровождение.

Следуя этим лучшим практикам, ваши скрипты для автоматизации UI будут более надежными, простыми для сопровождения и устойчивыми к изменениям в структуре DOM.

Перевод статьи «Best Practices for Selecting XPath Locators in UI Automation».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *