Что такое локаторы и какие виды локаторов используются в мобильном тестировании
Что проверяют
Знаете ли вы стратегии поиска элементов в нативных приложениях и понимаете ли, почему автотесты рассыпаются после редизайна. Ответ быстро показывает, писали вы мобильную автоматизацию сами или пересказываете статью про веб.
Как отвечать
Локатор это способ адресовать элемент в дереве интерфейса. В нативном приложении это не DOM, а иерархия представлений, которую драйвер отдаёт в виде XML, поэтому и стратегии здесь свои.
Что используют, примерно в порядке предпочтения:
- accessibility id: кроссплатформенный, ложится на описание для доступности в обеих системах и попутно улучшает саму доступность;
- идентификатор ресурса в Android: быстрый и устойчивый, если разработчики его проставили;
- нативные стратегии платформы (селекторы Android и предикаты с цепочкой классов в iOS): выполняются на устройстве и работают заметно быстрее;
- имя класса и текст: хрупкие, текст вдобавок ломается при смене языка;
- XPath: последнее средство и самый медленный вариант, особенно в iOS, где под запрос выгружается вся иерархия.
Сильный ответ заканчивается мыслью, что локаторы это договорённость с разработкой: стабильные идентификаторы просят проставить в коде экрана, а не вылавливают регулярными выражениями по вёрстке.
Где спотыкаются
Приносят в мобильное тестирование селекторы CSS. В нативном контексте их нет вовсе, они доступны только после переключения драйвера в веб-контекст внутри встроенного браузера, и про это переключение надо сказать отдельно.
Пишут абсолютные пути XPath по цепочке контейнеров. Такой локатор ломается от любой правки вёрстки, а на iOS ещё и заметно тормозит; относительный поиск по атрибуту устойчивее и читается лучше.
Ищут элемент по видимому тексту и потом удивляются падению англоязычного прогона. Текст это контент, он меняется вместе с переводами и экспериментами: адресовать элемент нужно по идентификатору, а текст проверять отдельной проверкой.