Поиск оптимальных локаторов для начинающих |
18.09.2020 00:00 |
Автор: Александра Гудкина Что такое локаторы (краткий ликбез) Локатор — это путь к элементу в интерфейсе, с помощью которого автоматизированный тест (автотест) сможет его найти. Локаторы используются в автотестах, имитирующих работу пользователя в интерфейсе, в любых системах, но мы сегодня будем говорить только о web-системах. Для других систем виды локаторов будут другими, но к ним можно применять тот же подход поиска, как и в вебе. Оптимальный локатор Найти локатор элемента — половина задачи, куда сложнее найти самый оптимальный. Почему нельзя просто взять первый попавшийся локатор, если тест все равно зеленый? Автотесты пишут для того, чтобы переиспользовать их много раз. Если локаторы будут не очень хорошими, то при частых изменениях системы они быстро становятся неактуальными, и их приходится переписывать. Помимо этого, сами тесты будут падать, не доходить до нужных проверок,и можно пропустить критичную ошибку. Чтобы такого не было — ищем оптимальный локатор. Во-первых, он должен однозначно определять наш элемент, т.е. должен быть уникальным в пределах страницы (экрана). Конечно, иногда нам нужно найти группу однотипных элементов (например, разные элементы списка), но даже в этом случае мы ищем локатор, позволяющий найти только эти элементы и никакие больше. Как подбирать локаторПервым делом нужно открыть инструменты разработчика в браузере и посмотреть на верстку страницы (в браузере Chrome горячая клавиша F12). Выбираем на странице элемент, для которого будем строить локатор, и приступаем к анализу. 1. Сначала ищем у элемента атрибут id или name и убеждаемся, что он уникален и не меняется. Эти атрибуты наиболее точно подходят под описание оптимального локатора, но иногда их делают динамическими, т.е. при обновлении страницы значение этих атрибутов не меняется. Например, у текстового поля (input) есть и id, и name — комбо, можем использовать любой атрибут: 2. Если id и name нет, продолжаем анализировать другие атрибуты элемента. Часто разработчики добавляют свои уникальные атрибуты. Здесь также можно присмотреться и к атрибуту class элемента (если он есть), но помним, что классы далеко не всегда уникальны и могут часто меняться. В случае с классом достаточно простого локатора, но если это нестандартный атрибут — составляем css или xpath. 3. Элемент совсем ничем не примечателен? Переходим к элементу на уровень выше (родителю) и повторяем пункты 1 и 2. Тут уже простым локатором точно не обойтись, придется составлять сложный. 4. У родителя опять ничего примечательного нет, куда смотреть дальше? Поднимаемся еще выше, смотрим всех предков элемента (элементов выше уровнем) в поиске уникальных атрибутов. Тут возникает два вопроса: когда остановиться и какие элементы потом включить в локатор. Каждый элемент находится внутри какого-то блока, а тот еще в каком-то блоке. «Подниматься» по предкам мы будем до тех пор, пока не достигнем того блока, который явно отображается на странице как бы “снаружи” нашего элемента. Всех тех предков, что мы отмели по этому пути, просто исключаем из локатора, они не влияют на поиск элемента. А теперь посмотрим, как этот div выглядит в интерфейсе: он определяет весь блок поиска на странице. 5. Так и не нашли локатор, начинаем шерстить по соседям (элементам, расположенным рядом с искомым на одном уровне) и потомкам (элементам внутри искомого), опять повторяя шаги 1 и 2. Здесь стараемся не уходить далеко от искомого элемента, т.к. такой локатор может быть самым нестабильным. ДополнительноЧто делать, если совсем не за что зацепиться, и хороший локатор так и не был найден? Можно (и даже нужно) сходить к разработчикам и попросить их добавить какие-то идентификаторы элементам. Это вообще лучше сделать сразу, как пункты 1 и 2 не сработали. Если и здесь не получилось, придется смириться и составлять локаторы из того, что есть. |