Как ты проектируешь устойчивые локаторы? Какие признаки плохого локатора?
1️⃣ Как кратко ответить
Устойчивые локаторы проектируются с использованием уникальных и стабильных атрибутов элементов, таких как id, name, data-* атрибуты, и текстовые значения, которые редко меняются. Плохие локаторы зависят от динамических атрибутов, таких как автоматически генерируемые id, индексы в иерархии DOM, или стили, которые могут изменяться при изменении интерфейса.
2️⃣ Подробное объяснение темы
Проектирование устойчивых локаторов — это ключевой аспект автоматизации тестирования, который позволяет тестам быть надежными и менее подверженными сбоям при изменениях в пользовательском интерфейсе. Устойчивые локаторы помогают тестам оставаться актуальными и минимизируют необходимость их частого обновления.
Принципы проектирования устойчивых локаторов
-
Использование уникальных атрибутов:
idиname: Если элемент имеет уникальныйidилиname, это идеальные кандидаты для локаторов, так как они обычно стабильны и уникальны.data-*атрибуты: Эти атрибуты часто используются специально для тестирования и не влияют на визуальное отображение, что делает их стабильными.- Текстовые значения: Использование текста элемента может быть устойчивым, если текст редко меняется.
-
Избегание динамических атрибутов:
- Автоматически генерируемые
id: Такиеidмогут изменяться при каждом обновлении страницы или перезагрузке, что делает их ненадежными. - Индексы в иерархии DOM: Использование индексов для навигации по элементам может быть ненадежным, так как добавление или удаление элементов изменяет индексы.
- Автоматически генерируемые
-
Использование относительных путей:
- Относительные пути в 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 в этом примере демонстрирует, как можно проектировать устойчивые локаторы, которые не зависят от изменений в структуре страницы.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться