Тестовый Uiautomator

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

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

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

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

классный

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

Котлин

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

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

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

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

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

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

Версия 2.4

Версия 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 для учета динамической частоты обновления (т. е. плавного отображения) ( 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 ).