Тестовый Uiautomator

Фреймворк для кросс-приложенийного функционального тестирования пользовательского интерфейса
Последнее обновление Стабильный релиз Кандидат на релиз Бета-версия Альфа-релиз
13 августа 2025 г. 2.3.0 - - 2.4.0-альфа06

Объявление зависимостей

Чтобы добавить зависимость от test, необходимо добавить репозиторий Google Maven в свой проект. Подробнее см. в репозитории Google Maven .

Добавьте зависимости для необходимых артефактов в файл build.gradle вашего приложения или модуля:

классный

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation "androidx.test.uiautomator:uiautomator:2.4.0-alpha06"
}

Котлин

dependencies {
    // Use to implement UIAutomator tests
    androidTestImplementation("androidx.test.uiautomator:uiautomator:2.4.0-alpha06")
}

Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .

Обратная связь

Ваши отзывы помогают улучшить Jetpack. Сообщите нам, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с уже существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете проголосовать за существующую проблему, нажав на кнопку со звёздочкой.

Создать новый выпуск

Более подробную информацию см. в документации по системе отслеживания проблем .

Тестовая оболочка Uiautomator версии 1.0

Версия 1.0.0-альфа02

13 августа 2025 г.

Выпущен androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02 . Версия 1.0.0-alpha02 содержит следующие коммиты .

Версия 1.0.0-альфа01

18 июня 2025 г.

Выпущен androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01 . Версия 1.0.0-alpha01 содержит следующие коммиты .

Новые функции

  • Первая альфа-версия библиотеки оболочки ui-automator для выполнения команд оболочки от имени пользователя оболочки. Эта библиотека позволяет читать стандартный вывод (stdout), стандартный поток ошибок (stderr) и записывать данные в стандартный поток ввода (stdin) процесса sh, запущенного оболочкой. Фактически, она является бэкпортом UiAutomation#executeShellCommandRwe представленного в API 34.

Версия 2.4

Версия 2.4.0-альфа06

13 августа 2025 г.

Выпущен androidx.test.uiautomator:uiautomator:2.4.0-alpha06 . Версия 2.4.0-alpha06 содержит следующие коммиты .

Новые функции

  • Добавлены API на основе окон для улучшенного тестирования многоокон, т. е. UiDevice#findWindow теперь можно использовать для поиска определенного UiWindow в соответствии с ByWindowSelector , созданным с помощью методов фабрики By.Window . ( I359c4 , I40528 , I8c963 )

Версия 2.4.0-альфа05

18 июня 2025 г.

Выпущен androidx.test.uiautomator:uiautomator:2.4.0-alpha05 . Версия 2.4.0-alpha05 содержит следующие коммиты .

Изменения API

  • Добавлен UiObject2#waitForStable как сокращение для UiObject2#accessibilityNodeInfo#waitForStable()

Версия 2.4.0-альфа04

4 июня 2025 г.

Выпущен androidx.test.uiautomator:uiautomator:2.4.0-alpha04 . Версия 2.4.0-alpha04 содержит следующие коммиты .

Изменения API

  • Переименован в onView в onElement , чтобы было понятно, работает ли он с Compose ( I53a3b , b/419006806 ).

Исправления ошибок

Версия 2.4.0-альфа03

20 мая 2025 г.

Выпущен androidx.test.uiautomator:uiautomator:2.4.0-alpha03 . Версия 2.4.0-alpha03 содержит следующие коммиты .

Исправления ошибок

  • Исправлена ошибка waitForStableInActiveWindow вызывавшая NPE в некоторых случаях ( Ibf50f , b/417046391 ).

Версия 2.4.0-альфа02

7 мая 2025 г.

Выпущен androidx.test.uiautomator:uiautomator:2.4.0-alpha02 . Версия 2.4.0-alpha02 содержит следующие коммиты .

Новые функции

  • Начальная версия нового API Uiautomator . UiAutomatorTestScope можно создать через фабрику uiAutomator , которая предоставляет доступ к новому API onView .
  • Начальные правила Lint для предупреждения об использовании AccessibilityNodeInfo#getText и предложения использовать textAsString .

Изменения API

  • Добавлен Configurator#setDefaultDisplayId для установки идентификатора дисплея, ограничивающего все поиски ( Icdf17 ).
  • Для удобства изменен Searchable (интерфейс, общий для UiDevice и UiObject2 ) на public ( I67f18 ).

Исправления ошибок

  • Исправлена обработка метаклавиш в UiDevice#pressKeyCodes . ( I73f80 ).
  • Обновлен UiDevice#getWindowRoots , чтобы всегда возвращать корни в порядке Z ( I87426 ).
  • Исправлена ошибка, из-за которой некоторые жесты были неполными ( I60dd3 , If4edd ).
  • Исправлен редкий бесконечный цикл при вызове UiDevice#scrollUntil ( I39989 ).

Версия 2.4.0-альфа01

26 июня 2024 г.

Выпущен androidx.test.uiautomator:uiautomator:2.4.0-alpha01 . Версия 2.4.0-alpha01 содержит следующие коммиты .

Изменения API

  • Устаревшие Configurator#getKeyInjectionDelay и setKeyInjectionDelay поскольку параметр теперь не используется, поскольку текст всегда вводится напрямую, а не нажатием клавиш. ( I3bcc5 ).

Исправления ошибок

  • Обновлена задержка между событиями движения UiObject2 для учета динамической частоты обновления (т. е. Smooth Display) ( I43f12 ).
  • Уменьшена нестабильность, вызванная устареванием узлов доступности в некоторых пользовательских интерфейсах за счет периодической отмены кэша доступности ( I3be25 ).
  • Исправлены исключения StaleObjectException , возникающие при вызове toString или hashCode для устаревшего UiObject2 . ( I38ea1 ).
  • Улучшена производительность UiWatcher за счет пропуска ненужных вызовов waitForIdle . ( I8c65e ).
  • Исправлены неточности Javadoc, особенно для пояснения случаев использования каждого параметра Configurator . ( Ie10b1 , I71631 ).

Версия 2.3.0

Версия 2.3.0

21 февраля 2024 г.

Выпущен androidx.test.uiautomator:uiautomator:2.3.0 . Версия 2.3.0 содержит следующие коммиты.

Важные изменения по сравнению с версией 2.2.0

  • Поддержка нескольких дисплеев : добавлена поддержка поиска и работы с объектами на нескольких дисплеях, а также методы UiDevice для управления дополнительными дисплеями ( Ie6544 , I912cd ).
  • Новые селекторы :
    • Добавлен By.displayId для выбора объектов по их идентификатору отображения ( I1825b ).
    • Добавлены By.hasParent и By.hasAncestor для выбора объектов в соответствии с их родителями ( I93c36 ).
    • Добавлены методы By.hint для выбора объектов по тексту подсказки ( Idd345 ).
  • Пользовательские условия : предоставлен интерфейс Condition для поддержки пользовательских условий ожидания и добавлены соответствующие методы UiDevice#wait , UiObject2#wait и UiObject2#scrollUntil ( 27c0ea , 099d6e ).
  • Исправление ошибок и надежность
    • Исправлена ошибка, из-за которой расчёт размера экрана иногда был некорректным и мог игнорировать некоторые его части ( Ifc016 ). Возможно, потребуется скорректировать координаты и смещения, используемые в тестах.
    • Обновлена инъекция MotionEvent для повышения точности ( 678ca3 ) и лучшей эмуляции жестов пользователя ( 454450 ).
    • Повышена надежность прокрутки ( I7b059 ), вращения ( c6cea0 ), длинного нажатия ( 49572b ), сжатия ( 3c619a ) и т. д.

Версия 2.3.0-rc01

7 февраля 2024 г.

androidx.test.uiautomator:uiautomator:2.3.0-rc01 выпущен без изменений. Версия 2.3.0-rc01 содержит эти коммиты.

Версия 2.3.0-beta01

13 декабря 2023 г.

Выпущен androidx.test.uiautomator:uiautomator:2.3.0-beta01 . Версия 2.3.0-beta01 содержит следующие коммиты.

Изменения API

  • Методы процентного поля UiObject2 переименованы в setGestureMarginPercentage и setGestureMarginsPercentage для обеспечения единообразия ( I24435 ).

Исправления ошибок

  • Исправлена ошибка, возникающая, когда дополнительный дисплей не найден или недоступен ( 116b23 ).

Версия 2.3.0-альфа05

1 ноября 2023 г.

Выпущен androidx.test.uiautomator:uiautomator:2.3.0-alpha05 . Версия 2.3.0-alpha05 содержит следующие коммиты.

Изменения API

  • Добавлен UiObject2#getDrawingOrder для отображения информации о порядке отрисовки (z-index). ( I5dfa4 ).
  • Добавлены методы UiDevice для получения, установки, заморозки и разморозки вращения дополнительных дисплеев. ( I912cd ).

Исправления ошибок

  • Добавлена повторная попытка в UiObject2#scrollUntil , когда не удалось обнаружить конец прокрутки ( Ibac6f ).
  • Исправлена ошибка, из-за которой UiDevice использовал устаревший экземпляр Instrumentation , если он был создан заново ( I18cae ).
  • Исправлена возможная ошибка NPE, если идентификатор дисплея не может быть определен при дампе узлов ( Icafcb ).
  • Добавлено предупреждение при выполнении кликов/прокрутки на некликабельных/прокручиваемых объектах ( I4a5d9 ).
  • Уменьшена скорость прокрутки UiObject2 по умолчанию для повышения надежности ( I5e071 ).

Версия 2.3.0-альфа04

26 июля 2023 г.

Выпущен androidx.test.uiautomator:uiautomator:2.3.0-alpha04 . Версия 2.3.0-alpha04 содержит следующие коммиты.

Изменения API

  • Добавлены By.hasParent и By.hasAncestor для поддержки поиска объектов по их родителям ( I93c36 ).
  • Добавлены методы UiObject2#getHint для получения текста подсказки объекта и By.hint для выбора объектов в соответствии с их текстом подсказки ( Idd345 ).
  • Добавлен By.displayId для поддержки выбора объектов в соответствии с дисплеем, на котором они находятся ( I1825b ).
  • Добавлены методы UiDevice#getDisplayHeight(int) и UiDevice#getDisplayWidth(int) для определения размеров дисплея по его идентификатору ( Ie6544 ).
  • Повторно добавлены методы wait(SearchCondition, long) и wait(UiObject2Condition, long) для обратной совместимости ( Iebfda ).
  • Изменен UiDevice#executeShellCommand на публичный, но не рекомендуется вместо скрытого ( Ic48a1 ).

Исправления ошибок

  • Обновлено внедрение MotionEvent для уменьшения нестабильности за счет придания приоритета точности жестов над скоростью ( 678ca3 ).
  • Добавлена трассировка ресурсоемких методов для выявления узких мест производительности ( d17de3 ).
  • Добавлен механизм повторных попыток при инициировании соединения UiAutomation ( 048caf ).
  • Исправлена возможная ошибка NPE из-за нулевых узлов в UiDevice#dumpWindowHierarchy ( b725eb ).
  • Исправлены непредвиденные ошибки при запросах или работе на частных дисплеях ( 985db6 , 7053d4 ).

Версия 2.3.0-альфа03

19 апреля 2023 г.

Выпущен androidx.test.uiautomator:uiautomator:2.3.0-alpha03 . Версия 2.3.0-alpha03 содержит следующие коммиты.

Изменения API

  • Предоставил интерфейс Condition , позволяющий использовать пользовательские условия ожидания вместо того, чтобы полагаться исключительно на встроенные в Until , а также обновил методы UiDevice#wait и UiObject2#wait для принятия этого интерфейса ( 27c0ea ).
  • Добавлен UiObject2#scrollUntil для поддержки прокрутки до тех пор, пока не будет выполнено условие, и для достижения паритета с UiScrollable ( 099d6e ).
  • Добавлены UiDevice#setOrientationPortrait и setOrientationLandscape для упрощения поворотов между типами устройств ( e13cb7 ).
  • Добавлен UiObject2#setGestureMarginPercent для поддержки установки полей относительно размера объекта. ( Ib8c77 )

Исправления ошибок

  • Исправлены методы UiScrollable , иногда использующие неверные координаты в SDK 18–22 ( b53ece ).
  • Исправлена ошибка, из-за которой UiObject2#setText и clearText не изменяли текст в SDK 18 и 19 ( 77e41d ).
  • Исправлена ошибка, из-за которой UiWatcher выполнялись в неправильном порядке ( c85f92 ).
  • Исправлена ошибка, из-за которой поворот устройства мог не быть завершен после изменения ориентации UiDevice ( c6cea0 ).
  • Повышена надежность длительных нажатий, перетаскиваний и сжатий ( 49572b , 3c619a ).

Версия 2.3.0-альфа02

11 января 2023 г.

Выпущен androidx.test.uiautomator:uiautomator:2.3.0-alpha02 . Версия 2.3.0-alpha02 содержит следующие коммиты.

Изменения API

  • Переработано ведение журнала во всей библиотеке для предоставления большего количества информации, предупреждения о возможных проблемах и повышения согласованности.
  • Добавлен UiDevice#pressKeyCodes для поддержки одновременного нажатия нескольких клавиш, например, нажатие POWER и VOLUME_DOWN для создания снимка экрана ( 22e525 ).
  • Добавлен UiDevice#setCompressedLayoutHierarchy и объявлен устаревшим UiDevice#setCompressedLayoutHeirarchy для исправления опечатки в названии метода ( 4e2f65 ).
  • UiAutomatorInstrumentationTestRunner отмечен как устаревший, поскольку он обрабатывает устаревшие UiAutomatorTestCase и больше не нужен ( be6c85 ).
  • Задержка между событиями UiObject2 MotionEvent обновлена так, чтобы она в два раза превышала частоту обновления дисплея для лучшей эмуляции жестов пользователя ( 454450 ).
  • Добавлена поддержка многострочного текста и сопоставления описаний ( 1625e6 , b/255787130 ).

Исправления ошибок

  • Исправлены исключения StaleObjectException , которые иногда возникали при запросе или ожидании объектов ( 4cbcc0 ).
  • Исправлена ошибка, из-за которой возвращаемые значения UiScrollable#scrollToBeginning , scrollToEnd , flingToBeginning и flingToEnd не указывали, было ли достигнуто начало/конец ( d33e06 ).
  • Исправлены методы UiScrollable#scrollForward и scrollBackward игнорирующие настроенный тайм-аут ( 29e4f3 ).
  • Исправлена ошибка, из-за которой конструктор копирования BySelector не обрабатывал селекторы глубины ( 6c7b91 ).
  • Исправлена обработка недопустимых значений процентов в UiObject#pinchIn и pinchOut ( 01b973 ).
  • Исправлена редкая проблема, из-за которой поддержка многооконного режима терялась при сбросе базового соединения UiAutomation ( 1bb956 ).

Версия 2.3.0-альфа01

7 сентября 2022 г.

Выпущен androidx.test.uiautomator:uiautomator:2.3.0-alpha01 . Версия 2.3.0-alpha01 содержит следующие коммиты.

Изменения API

  • Отмечена недействительность всех публичных методов.
  • Инъекция MotionEvent переведена на асинхронный режим с небольшой задержкой для более плавных жестов UiObject2 .
  • Уменьшен интервал опроса при ожидании с 1000 мс до 100 мс.
  • Обновлены UiDevice#wakeUp и UiDevice#sleep для использования KEYCODE_WAKEUP и KEYCODE_SLEEP для поддержки устройств, которые переопределяют кнопку питания.
  • Добавлен UiObject2#getDisplayId и поддержка поиска и управления объектами на нескольких дисплеях.
  • Добавлены методы UiObject#click и UiObject2#clickAndWait для щелчка по точке с использованием ее координат.

Исправления ошибок

  • Исправлена ошибка, из-за которой расчеты размера дисплея иногда были неверными и могли игнорировать части экрана, особенно в многооконном режиме ( Ifc016c ).
  • Исправлено масштабирование скриншотов в UiDevice#takeScreenshot ( Id80ad6 ).
  • Повышена надежность Until.scrollFinished и UiObject2#scroll ( I7b0595 ).
  • Исправлены предупреждения IncorrectContextUseViolation строгого режима ( Iffa6a0 ).