Тестовый 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 ).
Исправления ошибок
- Исправление
waitForStableInActiveWindow
( 290457f1 , b/420349130 )
Версия 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
, которая предоставляет доступ к новому APIonView
. - Начальные правила 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 ). - Новые селекторы :
- Пользовательские условия : предоставлен интерфейс
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 ).