← Назад ко всем вопросам

Как ты проектируешь устойчивые локаторы? Какие признаки плохого локатора?

1️⃣ Как кратко ответить

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

2️⃣ Подробное объяснение темы

Проектирование устойчивых локаторов — это ключевой аспект автоматизации тестирования, который позволяет тестам быть надежными и менее подверженными сбоям при изменениях в пользовательском интерфейсе. Устойчивые локаторы помогают тестам оставаться актуальными и минимизируют необходимость их частого обновления.

Принципы проектирования устойчивых локаторов

  1. Использование уникальных атрибутов:

    • id и name: Если элемент имеет уникальный id или name, это идеальные кандидаты для локаторов, так как они обычно стабильны и уникальны.
    • data-* атрибуты: Эти атрибуты часто используются специально для тестирования и не влияют на визуальное отображение, что делает их стабильными.
    • Текстовые значения: Использование текста элемента может быть устойчивым, если текст редко меняется.
  2. Избегание динамических атрибутов:

    • Автоматически генерируемые id: Такие id могут изменяться при каждом обновлении страницы или перезагрузке, что делает их ненадежными.
    • Индексы в иерархии DOM: Использование индексов для навигации по элементам может быть ненадежным, так как добавление или удаление элементов изменяет индексы.
  3. Использование относительных путей:

    • Относительные пути в XPath или CSS-селекторах более устойчивы, так как они не зависят от полной структуры DOM.

Признаки плохого локатора

  • Зависимость от динамических атрибутов: Локаторы, которые используют атрибуты, изменяющиеся при каждом рендеринге страницы, ненадежны.
  • Сложные и длинные XPath: Такие локаторы могут быть хрупкими, так как они зависят от полной структуры DOM.
  • Использование стилей: Локаторы, основанные на стилях (например, классы, которые могут изменяться при редизайне), ненадежны.

Пример кода

Рассмотрим пример использования устойчивого локатора в Selenium:

from selenium import webdriver
​
# Инициализация веб-драйвера
driver = webdriver.Chrome()
​
# Открытие страницы
driver.get("http://example.com")
​
# Использование устойчивого локатора с уникальным 'id'
element = driver.find_element_by_id("submit-button")
​
# Выполнение действия с элементом
element.click()
​
# Закрытие браузера
driver.quit()
  • driver = webdriver.Chrome(): Инициализирует веб-драйвер для браузера Chrome.
  • driver.get("http://example.com"): Открывает веб-страницу по указанному URL.
  • driver.find_element_by_id("submit-button"): Находит элемент на странице по уникальному id. Это пример устойчивого локатора.
  • element.click(): Выполняет клик по найденному элементу.
  • driver.quit(): Закрывает браузер и завершает сессию веб-драйвера.

Использование уникального id в этом примере демонстрирует, как можно проектировать устойчивые локаторы, которые не зависят от изменений в структуре страницы.

Тема: UI-автоматизация
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки