Тестовый Uiautomator

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

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

Чтобы добавить зависимость от test, необходимо добавить репозиторий Google Maven в ваш проект. Для получения дополнительной информации ознакомьтесь с информацией в репозитории Google Maven .

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

классный

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

Котлин

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

Для получения дополнительной информации о зависимостях см. раздел «Добавление зависимостей сборки» .

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

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

Создать новую задачу

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

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

Версия 1.0.0-alpha03

3 декабря 2025 г.

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

Изменения в API

  • Изменено время ожидания startActivity на ожидание нового окна ( I35da6 , b/440021797 )
  • Обновлен screenSizePixel в RecorderCommands ( If558c , b/429173157 )

Версия 1.0.0-alpha02

13 августа 2025 г.

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

Версия 1.0.0-alpha01

18 июня 2025 г.

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

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

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

Версия 2.4

Версия 2.4.0-beta01

11 февраля 2026 г.

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

Изменения в API

  • Сделайте команды без состояния синглтонами. ( I3394c , b/429173157 )
  • Обновите API RecorderCommands . ( Ie09e8 , b/429173157 )
  • Упростите API RecorderCommands , чтобы он имел четко определенный жизненный цикл. ( I30f89 , b/444305673 )

Версия 2.4.0-alpha07

3 декабря 2025 г.

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

Изменения в API

  • Изменено время ожидания startActivity на ожидание нового окна. Это делает запуск в целом синхронным и позволяет будущим версиям Macrobenchmark настраивать обнаружение завершения запуска. ( I35da6 , Id6e6f , b/440021797 )
  • Удалён API без явного указания имени пакета в UiAutomatorTestScope . ( I8c285 , b/413417205 )

Версия 2.4.0-alpha06

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-alpha05

18 июня 2025 г.

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

Изменения в API

  • Добавлена ​​функция UiObject2#waitForStable в качестве сокращения для UiObject2#accessibilityNodeInfo#waitForStable()

Версия 2.4.0-alpha04

4 июня 2025 г.

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

Изменения в API

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

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

Версия 2.4.0-alpha03

20 мая 2025 г.

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

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

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

Версия 2.4.0-alpha02

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-alpha01

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 ).
  • Новые селекторы :
    • Добавлена ​​возможность выбора объектов по их идентификатору отображения ( I1825b ) с By.displayId .
    • Добавлены 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-alpha05

1 ноября 2023 г.

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

Изменения в API

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

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

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

Версия 2.3.0-alpha04

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) для определения размеров дисплея по его ID ( Ie6544 ).
  • Для обеспечения обратной совместимости добавлены методы wait(SearchCondition, long) и wait(UiObject2Condition, long) ( Iebfda ).
  • Изменено значение UiDevice#executeShellCommand на public, но discomeded вместо hidden ( Ic48a1 ).

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

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

Версия 2.3.0-alpha03

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-alpha02

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-alpha01

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

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

Изменения в API

  • Помечено, что все общедоступные методы являются нулевыми.
  • Для более плавных жестов UiObject2 внедрена асинхронная реализация MotionEvent с небольшой задержкой.
  • Уменьшен интервал опроса во время ожидания с 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 ).