Test Uiautomator

  
アプリ間の UI 機能テストのフレームワーク
最新の更新 安定版リリース リリース候補版 ベータ版リリース アルファ版リリース
2025 年 8 月 13 日 2.3.0 - - 2.4.0-alpha06

依存関係の宣言

test への依存関係を追加するには、Google の Maven リポジトリをプロジェクトに追加する必要があります。詳しくは、Google の Maven リポジトリをご覧ください。

アプリまたはモジュールの build.gradle ファイルに、必要なアーティファクトの依存関係を追加します。

Groovy

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

Kotlin

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

依存関係について詳しくは、ビルド依存関係の追加をご覧ください。

フィードバック

お寄せいただいたフィードバックは Jetpack 改善の参考にさせていただきます。新しい問題が見つかった場合や、このライブラリを改善するアイデアをお持ちの場合は、お知らせください。新しい問題を報告していただく前に、このライブラリの既存の問題をご確認ください。スターボタンをクリックすると、既存の問題に投票できます。

新しい問題を報告する

詳細については、Issue Tracker のドキュメントをご覧ください。

Test Uiautomator Shell バージョン 1.0

バージョン 1.0.0-alpha02

2025 年 8 月 13 日

androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha02 がリリースされました。バージョン 1.0.0-alpha02 にはこれらの commit が含まれています。

バージョン 1.0.0-alpha01

2025 年 6 月 18 日

androidx.test.uiautomator:uiautomator-shell:1.0.0-alpha01 がリリースされました。バージョン 1.0.0-alpha01 にはこれらの commit が含まれています。

新機能

  • シェルユーザーとしてシェルコマンドを実行する ui-automator シェル ライブラリの最初のアルファ版。このライブラリを使用すると、シェルによって起動された sh プロセスの stdout、stderr の読み取りと stdin への書き込みを行うことができます。事実上、api 34 で導入された UiAutomation#executeShellCommandRwe をバックポートします。

バージョン 2.4

バージョン 2.4.0-alpha06

2025 年 8 月 13 日

androidx.test.uiautomator:uiautomator:2.4.0-alpha06 がリリースされました。バージョン 2.4.0-alpha06 には、これらの commit が含まれています。

新機能

  • マルチウィンドウ テストを改善するためのウィンドウベースの API を追加しました。つまり、UiDevice#findWindow を使用して、By.Window ファクトリ メソッドで構築された ByWindowSelector に従って特定の UiWindow を見つけることができるようになりました。(I359c4I40528I8c963

バージョン 2.4.0-alpha05

2025 年 6 月 18 日

androidx.test.uiautomator:uiautomator:2.4.0-alpha05 がリリースされました。バージョン 2.4.0-alpha05 にはこれらの commit が含まれています。

API の変更

  • UiObject2#waitForStableUiObject2#accessibilityNodeInfo#waitForStable() のショートカットとして追加しました

バージョン 2.4.0-alpha04

2025 年 6 月 4 日

androidx.test.uiautomator:uiautomator:2.4.0-alpha04 がリリースされました。バージョン 2.4.0-alpha04 には、これらの commit が含まれています。

API の変更

  • onView の名前を onElement に変更し、Compose で動作することを明確にしました(I53a3bb/419006806

バグの修正

バージョン 2.4.0-alpha03

2025 年 5 月 20 日

androidx.test.uiautomator:uiautomator:2.4.0-alpha03 がリリースされました。バージョン 2.4.0-alpha03 にはこれらの commit が含まれています。

バグの修正

  • waitForStableInActiveWindow が NPE をスローするケースを修正しました(Ibf50fb/417046391

バージョン 2.4.0-alpha02

2025 年 5 月 7 日

androidx.test.uiautomator:uiautomator:2.4.0-alpha02 がリリースされました。バージョン 2.4.0-alpha02 にはこれらの commit が含まれています。

新機能

  • 新しい Uiautomator Api の初期形状。UiAutomatorTestScope は、新しい onView API へのアクセスを提供するファクトリ uiAutomator を介して作成できます。
  • AccessibilityNodeInfo#getText の使用に関する警告と textAsString の使用の提案を行う初期 Lint ルール。

API の変更

  • すべての検索を制限するディスプレイ ID を設定する Configurator#setDefaultDisplayId を追加しました(Icdf17)。
  • 便宜上、SearchableUiDeviceUiObject2 で共有されるインターフェース)を public に変更しました(I67f18)。

バグの修正

  • UiDevice#pressKeyCodes でのメタキーの処理を修正しました。(I73f80)。
  • UiDevice#getWindowRoots を更新し、常に Z 順でルートを返すようにしました(I87426)。
  • 特定のジェスチャーが完了しない問題を修正しました(I60dd3If4edd)。
  • UiDevice#scrollUntil を呼び出す際にまれに発生する無限ループを修正しました(I39989)。

バージョン 2.4.0-alpha01

2024 年 6 月 26 日

androidx.test.uiautomator:uiautomator:2.4.0-alpha01 がリリースされました。バージョン 2.4.0-alpha01 には、これらの commit が含まれています。

API の変更

  • テキストがキー押下ではなく常に直接挿入されるようになったため、パラメータが使用されなくなった Configurator#getKeyInjectionDelaysetKeyInjectionDelay を非推奨にしました。(I3bcc5)。

バグの修正

  • 動的リフレッシュ レート(スムーズ ディスプレイ)を考慮して、UiObject2 モーション イベント間の遅延を更新しました(I43f12)。
  • 特定の UI でのユーザー補助ノードの古さによる不安定さを、ユーザー補助キャッシュを定期的に無効にすることで軽減しました(I3be25)。
  • 古い UiObject2toString または hashCode を呼び出すと StaleObjectException が発生する問題を修正しました。(I38ea1)。
  • 不要な waitForIdle 呼び出しをスキップすることで、UiWatcher のパフォーマンスを改善しました。(I8c65e)。
  • javadoc の不正確さを修正しました。特に、各 Configurator パラメータがいつ使用されるかを明確にしました。(Ie10b1I71631)。

バージョン 2.3.0

バージョン 2.3.0

2024 年 2 月 21 日

androidx.test.uiautomator:uiautomator:2.3.0 がリリースされました。バージョン 2.3.0 に含まれる commit については、こちらをご覧ください

2.2.0 以降の重要な変更

  • マルチディスプレイのサポート: 複数のディスプレイにわたるオブジェクトの検索と操作のサポート、セカンダリ ディスプレイを管理する UiDevice メソッド(Ie6544I912cd)を追加しました。
  • 新しいセレクタ:
    • 表示 ID でオブジェクトを選択する By.displayId を追加しました(I1825b)。
    • 親に応じてオブジェクトを選択するために By.hasParentBy.hasAncestor を追加しました(I93c36)。
    • ヒントテキストでオブジェクトを選択する By.hint メソッドを追加しました(Idd345)。
  • カスタム条件: カスタム待機条件をサポートするために Condition インターフェースを公開し、対応する UiDevice#waitUiObject2#waitUiObject2#scrollUntil メソッドを追加しました(27c0ea099d6e)。
  • バグの修正と信頼性
    • ディスプレイ サイズの計算が不正確になることがあり、画面の一部が無視される問題を修正しました。(Ifc016)テストで使用される座標とオフセットの調整が必要になる場合があります。
    • 精度を向上させ(678ca3)、ユーザー操作を適切にエミュレートする(454450)よう MotionEvent の挿入を更新しました。
    • スクロール(I7b059)、回転(c6cea0)、長押し(49572b)、ピンチ(3c619a)などの信頼性を改善しました。

バージョン 2.3.0-rc01

2024 年 2 月 7 日

androidx.test.uiautomator:uiautomator:2.3.0-rc01 がリリースされました。変更はありません。バージョン 2.3.0-rc01 に含まれる commit については、こちらをご覧ください

バージョン 2.3.0-beta01

2023 年 12 月 13 日

androidx.test.uiautomator:uiautomator:2.3.0-beta01 がリリースされました。バージョン 2.3.0-beta01 に含まれる commit については、こちらをご覧ください

API の変更

  • 整合性のため、UiObject2 のパーセンテージ ベースの余白メソッドの名前を setGestureMarginPercentagesetGestureMarginsPercentage に変更しました(I24435

バグの修正

  • セカンダリ ディスプレイが見つからない場合やアクセスできない場合にスローされるエラーを改善しました(116b23

バージョン 2.3.0-alpha05

2023 年 11 月 1 日

androidx.test.uiautomator:uiautomator:2.3.0-alpha05 がリリースされました。バージョン 2.3.0-alpha05 に含まれる commit については、こちらをご覧ください

API の変更

  • 描画順序(z-index)の情報を公開する UiObject2#getDrawingOrder を追加しました。(I5dfa4)。
  • セカンダリ ディスプレイの回転を取得、設定、フリーズ、フリーズ解除する UiDevice メソッドを追加しました。(I912cd)。

バグの修正

  • スクロールの終了を検出できない場合に UiObject2#scrollUntil に再試行を追加しました(Ibac6f)。
  • UiDevice が再作成された場合に古い Instrumentation インスタンスを使用する問題を修正しました(I18cae)。
  • ノードのダンプ時にディスプレイ ID を特定できない場合(Icafcb)に発生する可能性のある NPE を修正しました。
  • クリックまたはスクロールできないオブジェクトに対してクリックまたはスクロールを実行したときに警告を追加しました(I4a5d9)。
  • 信頼性を高めるため、デフォルトの UiObject2 スクロール速度を下げました(I5e071)。

バージョン 2.3.0-alpha04

2023 年 7 月 26 日

androidx.test.uiautomator:uiautomator:2.3.0-alpha04 がリリースされました。バージョン 2.3.0-alpha04 に含まれる commit については、こちらをご覧ください

API の変更

  • 親に基づいてオブジェクトを検索できるように By.hasParentBy.hasAncestor を追加しました(I93c36)。
  • オブジェクトのヒントテキストを取得する UiObject2#getHint と、ヒントテキストに従ってオブジェクトを選択する By.hint メソッドを追加しました(Idd345)。
  • 表示されているディスプレイに応じてオブジェクトを選択できるように By.displayId を追加しました(I1825b)。
  • ID(Ie6544)でディスプレイのサイズを取得する UiDevice#getDisplayHeight(int) メソッドと UiDevice#getDisplayWidth(int) メソッドを追加しました。
  • 下位互換性を確保するため、wait(SearchCondition, long) メソッドと wait(UiObject2Condition, long) メソッドを再度追加しました(Iebfda)。
  • UiDevice#executeShellCommand を非表示ではなく、公開だが非推奨に変更しました(Ic48a1)。

バグの修正

  • 速度よりもジェスチャーの精度を優先することで、不安定さを軽減するように MotionEvent インジェクションを更新しました(678ca3)。
  • パフォーマンスのボトルネックを特定するため、リソースを大量に消費するメソッドにトレースを追加しました(d17de3)。
  • UiAutomation 接続の開始時に再試行メカニズムを追加しました(048caf)。
  • UiDevice#dumpWindowHierarchy の null ノードから発生する可能性のある NPE を修正しました(b725eb)。
  • プライベート ディスプレイのクエリまたは操作で予期しないエラーが発生する問題を修正しました(985db67053d4)。

バージョン 2.3.0-alpha03

2023 年 4 月 19 日

androidx.test.uiautomator:uiautomator:2.3.0-alpha03 がリリースされました。バージョン 2.3.0-alpha03 に含まれる commit については、こちらをご覧ください

API の変更

  • Until の組み込みのみに依存するのではなく、カスタムの待機条件を許可するために Condition インターフェースを公開し、このインターフェースを受け入れるように UiDevice#wait メソッドと UiObject2#wait メソッドを更新しました(27c0ea)。
  • 条件が満たされるまでスクロールし、UiScrollable とのパリティを実現するために、UiObject2#scrollUntil を追加しました(099d6e)。
  • デバイスタイプ間の回転を容易にするため、UiDevice#setOrientationPortraitsetOrientationLandscape を追加しました(e13cb7)。
  • オブジェクト サイズを基準としたマージンの設定をサポートするために UiObject2#setGestureMarginPercent を追加しました。(Ib8c77

バグの修正

  • UiScrollable メソッドが SDK 18 ~ 22 で無効な座標をまれに使用する問題を修正しました(b53ece)。
  • SDK 18 と 19 でテキストの変更に失敗する UiObject2#setTextclearText を修正しました(77e41d)。
  • UiWatcher が正しい順序で実行されない問題を修正しました(c85f92)。
  • UiDevice の向きの変更後、デバイスの回転がまだ完了していない可能性がある問題を修正しました(c6cea0)。
  • 長押し、ドラッグ、ピンチの信頼性を改善しました(49572b3c619a)。

バージョン 2.3.0-alpha02

2023 年 1 月 11 日

androidx.test.uiautomator:uiautomator:2.3.0-alpha02 がリリースされました。バージョン 2.3.0-alpha02 に含まれる commit については、こちらをご覧ください

API の変更

  • より多くの情報を提供し、発生する可能性のある問題を警告し、整合性を改善するよう、ライブラリ全体でロギングを再構築しました。
  • 複数のキーを同時に押す操作(POWER と VOLUME_DOWN を押してスクリーンショットを撮るなど)をサポートするため UiDevice#pressKeyCodes を追加しました。(22e525
  • メソッド名のスペルミスを修正するため、UiDevice#setCompressedLayoutHierarchy を追加して UiDevice#setCompressedLayoutHeirarchy を非推奨にしました。(4e2f65
  • 非推奨になった UiAutomatorTestCase を処理していて不要であるため、UiAutomatorInstrumentationTestRunner を非推奨としてマークしました。(be6c85
  • ディスプレイのリフレッシュ レートを 2 倍にしてユーザー操作を適切にエミュレートするよう UiObject2 MotionEvent 間の遅延を更新しました。(454450
  • 複数行のテキストと説明の一致のサポートを追加しました。(1625e6b/255787130

バグの修正

  • オブジェクトのクエリ中または待機中に StaleObjectException がスローされることがある問題を修正しました。(4cbcc0
  • UiScrollable#scrollToBeginningscrollToEndflingToBeginningflingToEnd の戻り値が、開始 / 終了に達したかどうかを示さない問題を修正しました。(d33e06
  • UiScrollable#scrollForwardscrollBackward のメソッドが設定済みのタイムアウトを無視する問題を修正しました。(29e4f3
  • BySelector コピー コンストラクタがデプスセレクタを処理しない問題を修正しました。(6c7b91
  • UiObject#pinchInpinchOut での無効なパーセント値の処理を修正しました。(01b973
  • 基盤となる UiAutomation 接続がリセットされるとマルチウィンドウ サポートが失われるというまれな問題を修正しました。(1bb956

バージョン 2.3.0-alpha01

2022 年 9 月 7 日

androidx.test.uiautomator:uiautomator:2.3.0-alpha01 がリリースされました。バージョン 2.3.0-alpha01 に含まれる commit については、こちらをご覧ください

API の変更

  • すべてのパブリック メソッドの null 可能性にアノテーションを付けました。
  • UiObject2 ジェスチャーを滑らかにするために MotionEvent の挿入を非同期に切り替え、短い遅延を加えました。
  • 待機中のポーリング間隔を 1,000 ミリ秒から 100 ミリ秒に短縮しました。
  • 電源ボタンをオーバーライドするデバイスを KEYCODE_WAKEUPKEYCODE_SLEEP を使用してサポートするように UiDevice#wakeUpUiDevice#sleep を更新しました。
  • UiObject2#getDisplayId を追加し、複数のディスプレイにわたるオブジェクトの検索と管理をサポートしました。
  • 座標を使用してポイントをクリックできるように、UiObject#click メソッドと UiObject2#clickAndWait メソッドを追加しました。

バグの修正

  • 特にマルチウィンドウ モードで、ディスプレイ サイズの計算が不正確になることがあり、画面の一部が無視される問題を修正しました。(Ifc016c
  • UiDevice#takeScreenshot でのスクリーンショットのスケーリングを修正しました。(Id80ad6
  • Until.scrollFinishedUiObject2#scroll の信頼性を改善しました。(I7b0595
  • 厳格モードの IncorrectContextUseViolation 警告を修正しました。(Iffa6a0