Учебник по UIAutomatorViewer: Инспектор для Android Тестирование

⚡ Умное резюме

UIAutomatorViewer — это графический инспектор, входящий в состав пакета. Android SDK, который делает снимок экрана устройства, отображает иерархию представлений и предоставляет доступ к атрибутам. Appium Необходимо обеспечить надежное определение местоположения кнопок, полей и меток.

  • 🔘 Что она делает: Сканирует в реальном времени Android На экране отображается иерархия узлов рядом со свойством выбранного элемента.
  • ☑️ Где обитает: Пусковая установка находится в Android Папка с инструментами SDK называется uiautomatorviewer.bat и запускает Java окно рабочего стола.
  • Поток захвата: Включите параметры разработчика, подключите телефон через USB, затем нажмите «Снимок экрана устройства», чтобы загрузить текущий экран.
  • 🧪 Карта атрибутовping: text становится name, resource-id становится id, class становится className, а content-desc становится идентификатором доступности.
  • 🇧🇷 Поиск и устранение неисправностей: Сообщение «Нет Android Сообщение "Устройства обнаружены adb" почти всегда указывает на проблему с кабелем, драйвером или настройками отладки.
  • 📊 Современный вариант: Appium Инспектор покрывает Android и iOS, и остается доступным после того, как устаревший пакет инструментов SDK был снят с производства.

Инспектор UIAutomatorViewer для Android тестирование приложений

Что такое UIAutomatorViewer?

UIAutomatorViewer Это графический инструмент для сканирования и анализа компонентов пользовательского интерфейса. Android Приложение. Для автоматизации любого Android приложение с использованием AppiumПользователю необходимо идентифицировать объекты в тестируемом приложении (AUT). С помощью UIAutomatorViewer можно проверить пользовательский интерфейс тестируемого приложения. Android приложение, чтобы узнать иерархию и просмотреть различные свойства (id, текст…) элемента.

При выполнении сценариев автоматизации Appium Используется UIAutomatorViewer для идентификации различных свойств объекта и использования этих свойств для определения нужного объекта. Именно эта идея — прочитать атрибут в инспекторе, а затем повторно использовать его в качестве локатора в скрипте — рассматривается на остальной части этой страницы.

На скриншоте ниже показан инструмент в его обычном рабочем состоянии: слева — экран захваченного устройства, справа вверху — дерево узлов, а под ним — окно свойств выбранного узла.

Окно UIAutomatorViewer, отображающее захваченный экран устройства, дерево иерархии узлов и панель с подробной информацией об узле.

Предварительные условия для использования UIAutomatorViewer

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

  • A Java Комплект для разработки: uiautomatorviewer — это Java Для запуска настольного приложения с помощью пакетного скрипта необходимо установить JDK и обеспечить его доступность в системном пути.
  • Android SDK: Программа просмотра файлов находится внутри SDK. инструменты поэтому папку необходимо установить SDK до того, как лаунчер появится на диске.
  • Platform-tools и adb: зритель взаимодействует с устройством через Android Отладочный мост, поэтому АБР Необходимо установить и обеспечить распознавание телефона.
  • Параметры разработчика и отладка по USB: Оба параметра должны быть включены в настройках устройства, иначе adb никогда не отобразит устройство в списке.
  • USB-кабель с поддержкой передачи данных и драйвер: кабель только для зарядки или отсутствует драйвер производителя. WindowsВ результате получается пустой список устройств.
  • Тестируемое приложение: Приложение должно быть установлено и открыто на устройстве, поскольку инспектор фиксирует всё, что в данный момент отображается на экране.

При наличии этих шести пунктов этап загрузки занимает совсем немного времени.

Как скачать и установить UIAutomatorViewer

UIAutomatorViewer является частью Android Менеджер SDK станет доступен после установки менеджера SDK. Скачайте и установите его. Android SDK от официальный Android Studio Скачать страницу.

Как только появится строка Android После установки SDK перейдите по следующему пути:

c:\users\<username>\AppData\Local\Android\sdk\tools

Вы увидите пакетный файл со следующим именем:

uiautomatorviewer.bat

Double Щёлкните по нему, чтобы запустить графический интерфейс UIAutomatorViewer. Список папок выглядит так, как показано ниже, при этом пакетный файл находится рядом с другими инструментами SDK.

Android папка инструментов SDK в Windows Проводник, содержащий средство запуска пакетных файлов uiautomatorviewer.

⚠️ Примечание к версии: AndroidВ собственной устаревшей документации UI Automator по-прежнему описывается запуск инструмента из... /инструменты/но устаревший автономный Android Инструменты SDK В текущей версии SDK Manager этот пакет больше не предлагается. Android Studio релизы. В давно установленных системах и старых архивах SDK по-прежнему содержится лаунчер; при новой установке этот файл обычно отсутствует, и Appium Инспектор является практичной заменой. Описанные выше исходные шаги сохранены, поскольку они остаются актуальными для любой машины, на которой все еще есть папка инструментов.

Как использовать UIAutomatorViewer для поиска объектов в вашем приложении

Последовательность действий при съемке всегда одна и та же: подготовьте устройство, поднесите интересующий вас экран к камере, затем сделайте снимок.

  1. Включите опции разработчика на вашем устройстве. Читать AndroidРуководство по настройке параметров разработчика на устройстве. чтобы узнать, как включить параметры разработчика на Android устройств.
  2. Подключите ваш Android устройство подключается к ПК через USB-кабель.
  3. Выберите "GuruВыберите приложение «99» из списка приложений, как показано ниже.

Guru99 заявок выбраны из Android список приложений устройства

  1. Нажмите Скриншот устройства кнопка для обновления UIAutomatorViewer и загрузки Guru99. Графический интерфейс приложения в инструменте. Кнопка расположена на панели инструментов, выделенной ниже.

Кнопка на панели инструментов для создания скриншотов устройства используется для обновления экрана, захваченного с помощью UIAutomatorViewer.

  1. После завершения обновления отобразится скриншот GuruПриложение 99 открывается в левой панели.

Захваченный Guru99 экранов приложения загружены в левую панель UIAutomatorViewer

  1. Как вы видите на изображении выше, в правой части окна есть 2 панели.

В верхней панели отображается иерархия узлов — способ расположения и размещения компонентов пользовательского интерфейса. При нажатии на каждый узел в нижней панели отображаются свойства соответствующего элемента пользовательского интерфейса.

  1. Нажмите кнопку «Викторина» на изображении выше, чтобы просмотреть ее различные свойства (текст, идентификатор ресурса и т. д.).

Кнопка «Викторина» выбрана в дереве узлов, а ее свойства отображаются на нижней панели с подробной информацией.

Как использовать эти свойства для идентификации элементов, подлежащих автоматизации

Однако использовать свойства напрямую нельзя — каждое свойство имеет своё имя в API автоматизации. Давайте посмотрим, как использовать значения этих свойств. Следующие атрибуты можно использовать для идентификации кнопки «Викторина» в Guru99 ок.

Атрибут в UIAutomatorViewer Имя локатора в скрипте Типичное использование
текст имя Видимая метка на кнопке или статическом поле
идентификатор ресурса id Наиболее стабильный выбор, когда разработчик его выбирает.
класс имя класса Выбор группы виджетов одного типа
содержание-описание идентификатор доступности Кроссплатформенный локатор, который также помогает программам чтения с экрана.

Каждая картаping Видно непосредственно на панели сведений об узле. текст Атрибут можно использовать в качестве "имени", как показано в строке свойств ниже.

Строка с подробными сведениями об узле, отображающая значение текстового атрибута, используемого в качестве локатора имени.

идентификатор ресурса Атрибут можно использовать в качестве «идентификатора».

Строка с подробными сведениями об узле, отображающая значение атрибута resource-id, используемого в качестве идентификатора местоположения.

класс Атрибут можно использовать в качестве "className".

Строка с подробными сведениями об узле, отображающая значение атрибута класса, используемого в качестве локатора className.

содержание-описание Атрибут можно использовать в качестве «AccessibilityId».

Строка с подробными сведениями об узле, отображающая значение атрибута content-desc, используемого в качестве идентификатора доступности.

Помимо перечисленных выше атрибутов, мы можем использовать XPath для идентификации объектов. Имена этих атрибутов также передаются дальше. желаемые возможности а также стратегии поиска местоположения после запуска скрипта.

Как создавать XPath-локаторы из атрибутов UIAutomatorViewer

XPath используется в качестве резервного варианта, когда ни один атрибут сам по себе не является уникальным. Панель с подробными сведениями об узле предоставляет все необходимые для выражения значения, поэтому XPath — это, по сути, тот же атрибут, который вы уже прочитали, записанный в форме предиката.

Проходите панели в следующем порядке:

  1. Выберите узел на верхней панели и прочтите его содержимое. класс, текст, идентификатор ресурса и содержание-описание значения на нижней панели.
  2. Предпочтительнее использовать один стабильный атрибут. Если атрибут resource-id заполнен, используйте его и остановитесь — XPath не требуется.
  3. Если ничего уникального нет, объедините два атрибута в один предикат.
  4. Если метка изменяется во время выполнения, замените проверку на равенство на частичное совпадение.

Приведенные ниже шаблоны используют имена атрибутов точно так, как их отображает UIAutomatorViewer.

<!-- match on the visible label -->
//*[@text='Quiz']

<!-- match on the resource-id reported by the viewer -->
//*[@resource-id='com.example.app:id/quiz_button']

<!-- match on the widget class -->
//android.widget.Button[@text='Quiz']

<!-- partial match when the label is dynamic -->
//*[contains(@text,'Qui')]

<!-- two attributes combined for a unique match -->
//*[@class='android.widget.Button' and @content-desc='Quiz']

Несколько правил предотвращают зависание этих выражений. Абсолютные пути, которые проходят по всему дереву, ломаются в тот момент, когда разработчик оборачивает макет в еще один контейнер, поэтому начинайте каждое выражение с двойной косой черты и сопоставляйте данные с атрибутом. Предикаты на основе индексов ведут себя аналогично — они сохраняются до тех пор, пока на экране не появится строка. А выражение, уникальное на экране телефона, может соответствовать нескольким узлам на макете планшета, поэтому перед включением локатора в набор запросов следует повторно проверить один и тот же экран на обоих форм-факторах. Та же дисциплина применима и к XPath в Seleniumгде дерево представляет собой DOM, а не иерархию представлений.

Ошибки, с которыми можно столкнуться при использовании UIAutomatorViewer

Большинство сбоев происходит до того, как будет создан хотя бы один узел, и почти все они связаны с соединением между рабочей станцией и мобильным устройством.

  • Я вижу ошибку — «Нет» Android Устройства были обнаружены adb», — как показано на скриншоте ниже. Как это можно исправить?

Диалоговое окно UIAutomatorViewer сообщает, что нет Android Устройства были обнаружены с помощью adb.

Решение: Убедитесь, что ваше устройство подключено к компьютеру.

В таблице ниже этот ответ распространяется и на другие сообщения, с которыми тестировщики сталкивались чаще всего.

Симптом Вероятная причина фиксированный
Нет Android Устройства были обнаружены с помощью adb. Устройство не подключено, отладка по USB отключена или используется только кабель для зарядки. Подключите устройство с помощью кабеля передачи данных, включите отладку по USB, затем убедитесь, что телефон отображается в списке устройств adb.
Устройство внесено в список несанкционированных устройств. Запрос на ввод отпечатка пальца RSA никогда не принимался на телефоне. Разблокируйте экран, подключите устройство и нажмите «Разрешить отладку по USB».
Отсутствует файл uiautomatorviewer.bat. Устаревший пакет инструментов SDK не установлен. Используйте уже установленную версию SDK, которая всё ещё содержит его, или переключитесь на Appium Инспектор
Иерархия пуста или захват не удался Экран изменился во время дампа, или приложение блокирует захват экрана. Удерживайте экран неподвижно и сделайте снимок еще раз; снимки экрана в защищенном режиме сделать невозможно.
Содержимое WebView отображается как единый узел. Зритель читает только оригинальные отзывы. Просматривайте веб-контент с помощью инструментов разработчика браузера или инспектора, поддерживающего веб-контекст.

UIAutomatorViewer против Appium Инспектор против инспектора по компоновке

Три инспектора обычно используются против Android экраны, и они решают несколько разные проблемы.

Критерий UIAutomatorViewer Appium Инспектор Android Studio Инспектор макетов
Суда с Наследие Android пакет инструментов SDK Автономное настольное приложение Android Studio
Платформы проверены Android Важно Android и iOS Android Важно
Требуется работающий сервер. Нет, он взаимодействует напрямую с adb. Да, он подключается к Appium серверная сессия Нет, оно подключается к отлаживаемому процессу.
Генерирует код локатора Нет, значения копируются вручную. Да, он предлагает варианты местоположения и может записывать действия. Нет, это режим отладки.
Наиболее подходит для Быстрый поиск атрибутов в старой конфигурации Создание и проверка локаторов для пакета услуг. Диагностика проблем с компоновкой и отображением.

Для номера, который уже работает AppiumИнспектор является естественным преемником: он считывает те же атрибуты, использует тот же драйвер UiAutomator2 и работает также с iOS. Appium Проект инспектора Он активно выпускается, поэтому является более безопасным выбором для новой работы, в то время как Layout Inspector остается полезным, когда вопрос заключается в том, почему представление отображается некорректно, а не в том, как это исправить. Если вы все еще выбираете стек, более подробное сравнение вы найдете в нашем руководстве по... инструменты для тестирования мобильных приложений это хороший следующий шаг, и примеры мобильных тестовых случаев показать, во что в конечном итоге преобразуются данные с этих локаторов.

Часто задаваемые вопросы (FAQ)

Лишь частично. Программа просмотра считывает иерархию представления, поэтому WebView обычно отображается как один непрозрачный узел. Проверьте HTML-код внутри него с помощью инструментов разработчика браузера или используйте инспектор, который может переключаться в веб-контекст.

Нет. Инструмент привязан к Android Отладочный мост и Android Иерархия представления. Для экранов iOS используйте Appium Инспектор or XcodeИнспектор доступности, который вместо этого считывал дерево элементов XCUITest.

Эта команда записывает ту же иерархию в XML-файл на устройстве без графики. Она полезна в скриптах и ​​на безмониторных машинах, но при этом теряется наложение скриншота, которое позволяет быстро найти нужный узел.

Системы локации на основе машинного обучения оценивают несколько атрибутов одновременно — текст, класс, положение и соседние узлы — и повторно определяют элемент, когда один из них изменяется. Такое самовосстанавливающееся поведение снижает количество сбоев, вызванных переименованием идентификатора.

Да. Вставьте значения атрибутов в комментарий, и Copilot обычно автоматически создаст соответствующее поле объекта страницы и метод клика. Всегда сверяйте сгенерированный локатор с реальным экраном, поскольку предложение является предположением, а не поиском.

Нет. Программа просмотра работает с установленной на устройстве сборкой, поэтому APK-файл, который вы не скомпилировали, всё равно можно будет просмотреть. Будут заполнены только атрибуты, фактически заданные разработчиком, такие как resource-id и content-desc.

Да. Эмулятор работает с adb точно так же, как и физический телефон, поэтому кнопка «Снимок экрана устройства» делает снимок экрана точно так же. Эмуляторы удобны для начального этапа разработки скриптов, хотя финальные запуски следует проводить на реальном оборудовании.

Это позволяет присвоить каждому элементу управления стабильный, независимый от языка идентификатор, который одновременно служит идентификатором доступности в скрипте и меткой, которую произносит программа чтения с экрана. Надежность тестирования и доступность улучшаются благодаря изменению всего одной строки кода.

Подведем итог этой публикации следующим образом: