Какие локаторы вы используете при автоматизации ios?

Никак не могу разобраться с различными видами локаторов, при автоматизации native ios.

Делаю через Appium

Как первый вариант, можно искать элементы:

  • по name (но получается очень хрупко, особенно если приложение локализовано)
  • по xpath (тоже получается ненадежно, так как становится важным последовательность расположения элементов

Вычитал, что стоит использовать accessibility id, который можно задать в xcode:

Все бы было здорово, если бы не одно но. Accessibility id прописался и как name и как label - получается что если мне нужно будет получить текст c кнопки, то я не смогу этого сделать.

То есть получается какая то сомнительная польза от accessibility id. Это у всех так или я что то неправильно делаю?

У других фреймворков есть такая же проблема с локаторами?

Name - в понятии Appium’а и есть accessibility id. И это самый быстрый локатор для поиска. Если он есть, то используйте его, но под каждую локализацию да, придется изменять. В таких случаях можно использовать другие решения, типа UiMap.

1 лайк

Спасибо. Вроде разобрался.

Нужно accessibility_id прописывать не в “Label”, а в “Identifier”. Тогда можно будет получить текст элементов через get_attribute(‘label’)

А можно как нибудь получить допустим цвет текста?

А где можно прочитать про UiMap?

Единственное что я могу предположить - что это карта локаторов как например при использовании page object?

А можно как нибудь получить допустим цвет текста?

Только если разработчики прописали его в каком-нибудь атрибуте элемента, например, в value

Если цвет текста изменяется в зависимости от какого-то события, то скорее всего это можно проверить через значение аттрибута highlighted. В зависимости от версии iOS это значение будет либо 1 / 0, либо True / False.

1 лайк

Извините, что раньше не ответил. Не увидел сообщения.
Да, верно - это просто проперти файл с разными локаторами, где у каждого из них есть подпроперти для соответственной локализации.

Например:

en.loginButton = Join with Facebook
es.loginButton = Aliĝu kun Facebook

А можно просто создать отдельные файлы для каждой локализации. Перед инициализацией скрина ваш кастомный класс должен вычитывать и присваивать каждому элементу правильный локатор.