Ответ вслух Middle Локаторы обновлено

Как вы выбираете локаторы

Вопрос

Расскажите, как вы выбираете локаторы и как добиваетесь их устойчивости в проекте.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Сначала смотрю, можно ли найти элемент так, как его видит пользователь: по роли и подписи, getByRole или getByLabel. Если смысловых зацепок нет, использую data-testid, о которых мы договорились с фронтендом: они не меняются от стилей.

Что должно прозвучать в ответе

  • Приоритет: роль и подпись, затем data-testid, затем стабильный id или name

  • Избегаю абсолютного XPath, индексов, классов оформления

  • Договорённость с фронтендом о data-testid, проверка в ревью

  • Локаторы живут в Page Object, а не в тестах

  • Неоднозначность решаю уточнением от контейнера, а не индексом

Что могут спросить следом

  • Что делать, если разработчики против data-testid?
  • Как искать элемент в строке таблицы?

Разбор

Образцовый ответ: «Сначала смотрю, можно ли найти элемент так, как его видит пользователь: по роли и подписи, getByRole или getByLabel. Если смысловых зацепок нет, использую data-testid, о которых мы договорились с фронтендом: они не меняются от стилей. Стабильный id или name тоже подойдут. Чего избегаю: абсолютных XPath из DevTools, nth-child, классов CSS-in-JS. Если локатор находит несколько элементов, уточняю его контейнером, например ищу кнопку внутри нужной строки таблицы, а не беру первый. Все локаторы держу в Page Object, чтобы при изменении вёрстки править в одном месте»).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме