Что делать если нет нужных локаторов и как их добавить
Что проверяют
Умеете ли строить устойчивые селекторы без правок фронтенда, и умеете ли договориться о правках, когда без них никак. Локатор это контракт с разработкой, а не личный костыль автоматизатора.
Как отвечать
Сначала то, что делается своими силами:
- искать по смыслу, а не по вёрстке: роль и доступное имя, текст, подпись поля,
placeholder,aria-label. Такие локаторы переживают смену классов и перестановку блоков; - строить относительный путь от устойчивого предка: строка таблицы по тексту, поле рядом со своей меткой. Не абсолютный путь от корня;
- проверять уникальность прямо в консоли браузера через
document.querySelectorAllи обязательно на разных состояниях страницы, а не на одном скриншоте.
Чего просить у разработчиков: стабильный атрибут вроде data-testid на элементах, у которых нет ни роли, ни устойчивого текста. Аргумент считается деньгами: это дешевле, чем чинить десятки тестов после каждого рефакторинга вёрстки. Договорённость оформляется правилом для новых компонентов, иначе каждый раз будет разовая просьба.
Отдельно стоит проверить, что дело вообще в локаторе: элемент может лежать в iframe, в shadow DOM, дорисовываться лениво или ещё ехать анимацией. Найденные локаторы держать в page object, чтобы правка была в одном месте.
Где спотыкаются
Копируют XPath из devtools. Абсолютный путь с индексами ломается от вставки любой обёртки, а классы из css-модулей меняются на каждой сборке.
Лечат ненайденный элемент фиксированной паузой и решают, что виноват селектор. Флакует не он, а отсутствие ожидания нужного состояния: видимости, кликабельности, окончания запроса.
Развешивают data-testid на всё подряд, включая то, что однозначно находится по роли и тексту. Разметка зарастает служебными атрибутами, а тесты перестают проверять интерфейс так, как его видит пользователь.