UIAutomatorViewer チュートリアル: インスペクター Android テスト
⚡ スマートサマリー
UIAutomatorViewer は、 Android デバイスのスクリーンショットをキャプチャし、ビュー階層をレンダリングし、属性を公開するSDK Appium ボタン、フィールド、ラベルを確実に検出する必要がある。

UIAutomatorViewerとは何ですか?
UIAutomatorViewer は、UI コンポーネントをスキャンして分析する GUI ツールです。 Android アプリケーションを自動化するには。 Android 使用するアプリケーション Appiumユーザーは、AUT (テスト対象アプリケーション) 内のオブジェクトを識別する必要があります。UIAutomatorViewer を使用すると、 Android 要素の階層構造を調べ、さまざまなプロパティ(ID、テキストなど)を表示するためのアプリケーション。
自動化スクリプトの実行中、 Appium UIAutomatorViewerを使用してオブジェクトのさまざまなプロパティを識別し、それらのプロパティを使用して必要なオブジェクトを特定します。インスペクタで属性を読み取り、それをスクリプト内のロケータとして再利用するという、この単一のアイデアこそが、このページの残りの部分で説明する内容です。
以下のスクリーンショットは、ツールが通常動作している状態を示しています。左側にキャプチャされたデバイス画面、右上にノードツリー、その下に選択されたノードのプロパティシートが表示されています。
UIAutomatorViewerを使用するための前提条件
検査官は実際の端末またはエミュレーターのライブ画面を読み取るため、ウィンドウに何かが表示される前に、多少の設定が必要になります。
- A Java 開発キット: uiautomatorviewer は Java デスクトップアプリケーションはバッチスクリプトによって起動されるため、JDKがインストールされ、システムパスからアクセスできる状態である必要があります。
- その Android SDK: ビューアはSDK内に同梱されています 豊富なツール群 フォルダなので、ランチャーがディスク上に存在する前にSDKをインストールする必要があります。
- プラットフォームツールとadb: 視聴者はデバイスを通して Android デバッグブリッジなので ADB インストール済みで、端末を認識できる状態である必要があります。
- 開発者向けオプションとUSBデバッグ: 両方ともデバイス設定でオンにする必要があります。そうしないと、adbはデバイスを認識しません。
- データ転送に対応したUSBケーブルとドライバー: 充電専用ケーブル、またはメーカーのドライバーが見つからない Windows空のデバイスリストを生成します。
- テスト対象のアプリケーション: このアプリはデバイスにインストールして起動しておく必要があります。なぜなら、検査ツールは現在画面に表示されている内容をキャプチャするからです。
これら6つのアイテムが揃えば、ダウンロードの手順は簡単です。
UIAutomatorViewerのダウンロードとインストール方法
UIAutomatorViewer は、 Android SDKマネージャーは、SDKマネージャーをインストールするとアクセスできるようになります。 Android SDK 公式 Android Studio ダウンロードのページ.
一度 Android SDKがインストールされたら、次のパスに移動してください。
c:\users\<username>\AppData\Local\Android\sdk\tools
次の名前のバッチファイルがあることに気づくでしょう。
uiautomatorviewer.bat
Double それをクリックすると、UIAutomatorViewer GUIが起動します。フォルダ一覧は以下のようになり、バッチファイルは他のSDKツールと並んで配置されています。
⚠️ バージョンノート: Android独自の UI Automator レガシー ドキュメントでは、ツールを から起動する方法がまだ説明されています。 /ツール/しかし、時代遅れのスタンドアロン Android SDKツール このパッケージは、現在のSDKマネージャーでは提供されなくなりました。 Android Studio リリース。長期間インストールされているものや古い SDK アーカイブにはまだランチャーが含まれています。新規インストールの場合、ファイルは通常存在しません。 Appium Inspectorは実用的な代替ツールです。上記の手順は、ツールフォルダが残っているマシンであればどの機種でも正しく動作するため、そのまま残されています。
UIAutomatorViewerを使用してアプリケーション内のオブジェクトを検索する方法
撮影手順は常に同じです。デバイスを準備し、撮影したい画面をカメラの前に置き、スナップショットを撮ります。
- 有効にする 開発者のオプション お使いのデバイスでお読みください。 Androidデバイス上の開発者向けオプションを設定するためのガイド 開発者向けオプションを有効にする方法を確認するには Android デバイス。
- あなたの接続 Android USBケーブルを介してデバイスをPCに接続する。
- "を選択します。Guru以下に示すように、アプリケーション一覧から「99」アプリを選択します。
- クリック デバイスのスクリーンショット UIAutomatorViewer を更新して読み込むボタン Guru99 アプリケーション GUI をツールに組み込みます。ボタンは、下図でハイライト表示されているツールバーにあります。
- 更新が完了したら、 Guru99 アプリケーションが左ペインに開きます。
- 上の画像でわかるように、ウィンドウの右側には 2 つのパネルがあります。
上部のパネルにはノード階層、つまりUIコンポーネントの配置と内包状況が表示されます。各ノードをクリックすると、下部のパネルにそのUI要素のプロパティが表示されます。
- 上の画像にある「クイズ」ボタンを選択すると、そのさまざまなプロパティ(テキスト、リソースIDなど)が表示されます。
これらのプロパティを使用して自動化対象要素を識別する方法
プロパティを直接使用することはできません。各プロパティはオートメーション API で別の名前を持っています。これらのプロパティ値をどのように使用するかを見てみましょう。次の属性を使用して、「クイズ」ボタンを識別できます。 Guru99 アプリ。
| UIAutomatorViewer の属性 | スクリプト内のロケーター名 | 典型的な使用 |
|---|---|---|
| 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. | 名 | ボタンまたは静的フィールドに表示されるラベル |
| リソースID | id | 開発者が設定する場合、最も安定した選択肢 |
| class | className | 同じ種類のウィジェットのグループを選択する |
| コンテンツ説明 | アクセシビリティID | スクリーンリーダーにも役立つクロスプラットフォーム対応のロケーター |
各地図ping ノード詳細パネルに直接表示されます。 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. 属性は、以下のプロパティ行に示すように、「名前」として使用できます。
その リソースID 属性は「id」として使用できます。
その class 属性は「className」として使用できます。
その コンテンツ説明 この属性は「AccessibilityId」として使用できます。
上記の属性に加えて、オブジェクト識別のためのXPathを記述することもできます。これらの属性名は、渡すものでもあります。 望ましい能力 スクリプトが実行された後は、ロケーター戦略を実行します。
UIAutomatorViewerの属性からXPathロケーターを構築する方法
XPathは、単一の属性だけでは一意にならない場合に用いる代替手段です。ノードの詳細パネルには、式に必要なすべての値が表示されるため、XPathは実際には既に読み取った属性を述語形式で記述したものです。
パネルの作業は、以下の順序で行ってください。
- 上部のパネルでノードを選択し、その内容を読み取ります。 class, 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. , リソースID (NAIST) と コンテンツ説明 下段のパネルの値。
- 単一の安定した属性を使用することをお勧めします。resource-id が設定されている場合は、それを使用して処理を終了してください。XPath は不要です。
- 一意性を持たない属性は、2つの属性を1つの述語に組み合わせる。
- 実行時にラベルが変更された場合は、等価性テストを部分一致に切り替えます。
以下のパターンでは、UIAutomatorViewerが報告する属性名をそのまま使用しています。
<!-- match on the visible label --> //*[@text='Quiz'] <!-- match on the resource-id reported by the viewer --> //*[@resource-id='com.example.app:id/quiz_button'] <!-- match on the widget class --> //android.widget.Button[@text='Quiz'] <!-- partial match when the label is dynamic --> //*[contains(@text,'Qui')] <!-- two attributes combined for a unique match --> //*[@class='android.widget.Button' and @content-desc='Quiz']
これらの式が壊れにくくなるように、いくつかのルールがあります。ツリー全体を走査する絶対パスは、開発者がレイアウトをもう1つのコンテナでラップした瞬間に壊れてしまうため、すべての式を二重スラッシュで始め、代わりに属性でマッチさせます。インデックスベースの述語も同様に動作し、画面に行が追加されるまで存続します。また、電話画面では一意の式がタブレットレイアウトでは複数のノードに一致する可能性があるため、ロケータをスイートに昇格させる前に、両方のフォームファクタで同じ画面を再検査します。同じ規律が以下に適用されます。 XPath の Seleniumここで、ツリーはビュー階層ではなくDOMである。
UIAutomatorViewerの使用中に発生する可能性のあるエラー
ほとんどの障害は、ノードが1つでも描画される前に発生し、そのほぼすべてがワークステーションとハンドセット間の接続に起因している。
- エラーが見えます — 「いいえ」 Android 「adbによってデバイスが検出されました」というメッセージが表示されました(下のスクリーンショットを参照)。この問題を解決するにはどうすればよいでしょうか?
解決策: お使いのデバイスがPCに接続されていることを確認してください。
以下の表は、テスターが最も頻繁に遭遇するその他のメッセージについても、上記の回答を補足したものです。
| 症状 | 考えられる原因 | 修正する |
|---|---|---|
| いいえ Android adbによってデバイスが検出されました | デバイスが接続されていない、USBデバッグがオフになっている、または充電専用ケーブルが使用されている | データケーブルで再接続し、USBデバッグを有効にしてから、adbデバイスリストに端末が表示されることを確認してください。 |
| 不正なデバイスとしてリストされています | この端末ではRSA指紋認証プロンプトは一度も受け入れられなかった。 | 画面のロックを解除し、再接続して「USBデバッグを許可」をタップします。 |
| uiautomatorviewer.bat が見つかりません | 古いSDKツールパッケージがインストールされていません | 既存の SDK インストールを使用するか、 Appium 検査官 |
| 階層が空であるか、キャプチャに失敗しました | ダンプ中に画面が変更されたか、アプリが画面キャプチャをブロックしました | 画面を動かさずに再度スナップショットを撮ってください。セキュリティ保護された画面はキャプチャできません。 |
| WebViewコンテンツは単一のノードとして表示されます | 閲覧者はネイティブビューのみを読みます | ブラウザの開発者ツールまたはWebコンテキストをサポートするインスペクターを使用してWebコンテンツを検査します。 |
UIAutomatorViewer 対 Appium インスペクター vs レイアウトインスペクター
3人の検査官が一般的に使用されます Android 画面の種類は様々で、それぞれ少しずつ異なる問題を解決する。
| 基準 | UIAutomatorViewer | Appium 検査官 | Android Studio レイアウトインスペクタ |
|---|---|---|---|
| 同梱されている船 | 遺産 Android SDKツールパッケージ | スタンドアロンのデスクトップアプリケーション | Android Studio |
| 検査されたプラットフォーム | Android の | Android とiOS | Android の |
| 稼働中のサーバーが必要です | いいえ、adbと直接通信します | はい、それは接続します Appium サーバーセッション | いいえ、デバッグ可能なプロセスに接続します |
| ロケーターコードを生成します | いいえ、値は手作業でコピーされます | はい、位置情報を提案し、動作を記録できます。 | いいえ、これはデバッグビューです |
| に最適 | 古い設定での属性の簡単な検索 | スイート用のロケーターの構築と検証 | レイアウトとレンダリングの問題の診断 |
既に運行中のスイート Appium、Inspector は自然な後継機です。同じ属性を読み取り、同じ UiAutomator2 ドライバーを内部で実行し、iOS でも動作します。 Appium 検査官プロジェクト は積極的にリリースされているため、新しい作業にはより安全な選択肢です。一方、Layout Inspector は、ビューが奇妙にレンダリングされる理由が問題であり、その対処方法が問題である場合に引き続き役立ちます。スタックをまだ選択している場合は、ガイドのより広範な比較を参照してください。 モバイル アプリ テスト ツール これは良い次のステップであり、 モバイルテストケースの例 これらのロケーターが最終的に何に繋がるのかを示します。







