UIAutomatorViewer チュートリアル: インスペクター Android テスト

⚡ スマートサマリー

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

  • 🔘 効能は・・・ ライブスキャン Android 画面に、選択した要素のプロパティシートの横にノード階層を表示します。
  • ☑️ 生息場所: ランチャーは Android SDKツールフォルダにuiautomatorviewer.batとして保存し、 Java デスクトップウィンドウ。
  • キャプチャフロー: 開発者向けオプションを有効にし、USBケーブルで端末を接続してから、「デバイスのスクリーンショット」を押して現在の画面を読み込みます。
  • 🧪 属性マップping: text は name に、resource-id は id に、class は className に、content-desc はアクセシビリティ ID になります。
  • 🛠️ トラブルシューティング: 「いいえ」というメッセージ Android 「adb によってデバイスが検出されました」というメッセージは、ほぼ間違いなくケーブル、ドライバー、またはデバッグ設定の問題を示しています。
  • 📊 現代的な選択肢: Appium 検査官カバー Android iOS版も利用可能で、従来のSDKツールパッケージが廃止された後も引き続き利用可能です。

UIAutomatorViewer インスペクター Android アプリケーションテスト

UIAutomatorViewerとは何ですか?

UIAutomatorViewer は、UI コンポーネントをスキャンして分析する GUI ツールです。 Android アプリケーションを自動化するには。 Android 使用するアプリケーション Appiumユーザーは、AUT (テスト対象アプリケーション) 内のオブジェクトを識別する必要があります。UIAutomatorViewer を使用すると、 Android 要素の階層構造を調べ、さまざまなプロパティ(ID、テキストなど)を表示するためのアプリケーション。

自動化スクリプトの実行中、 Appium UIAutomatorViewerを使用してオブジェクトのさまざまなプロパティを識別し、それらのプロパティを使用して必要なオブジェクトを特定します。インスペクタで属性を読み取り、それをスクリプト内のロケータとして再利用するという、この単一のアイデアこそが、このページの残りの部分で説明する内容です。

以下のスクリーンショットは、ツールが通常動作している状態を示しています。左側にキャプチャされたデバイス画面、右上にノードツリー、その下に選択されたノードのプロパティシートが表示されています。

キャプチャされたデバイス画面、ノード階層ツリー、およびノー​​ド詳細パネルを表示する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 SDKツールフォルダ Windows uiautomatorviewerバッチランチャーを含むエクスプローラー

⚠️ バージョンノート: Android独自の UI Automator レガシー ドキュメントでは、ツールを から起動する方法がまだ説明されています。 /ツール/しかし、時代遅れのスタンドアロン Android SDKツール このパッケージは、現在のSDKマネージャーでは提供されなくなりました。 Android Studio リリース。長期間インストールされているものや古い SDK アーカイブにはまだランチャーが含まれています。新規インストールの場合、ファイルは通常存在しません。 Appium Inspectorは実用的な代替ツールです。上記の手順は、ツールフォルダが残っているマシンであればどの機種でも正しく動作するため、そのまま残されています。

UIAutomatorViewerを使用してアプリケーション内のオブジェクトを検索する方法

撮影手順は常に同じです。デバイスを準備し、撮影したい画面をカメラの前に置き、スナップショットを撮ります。

  1. 有効にする 開発者のオプション お使いのデバイスでお読みください。 Androidデバイス上の開発者向けオプションを設定するためのガイド 開発者向けオプションを有効にする方法を確認するには Android デバイス。
  2. あなたの接続 Android USBケーブルを介してデバイスをPCに接続する。
  3. "を選択します。Guru以下に示すように、アプリケーション一覧から「99」アプリを選択します。

Guru99件の応募が選ばれました Android デバイスアプリケーションリスト

  1. クリック デバイスのスクリーンショット UIAutomatorViewer を更新して読み込むボタン Guru99 アプリケーション GUI をツールに組み込みます。ボタンは、下図でハイライト表示されているツールバーにあります。

デバイスのスクリーンショットツールバーボタンは、UIAutomatorViewerのキャプチャを更新するために使用されます。

  1. 更新が完了したら、 Guru99 アプリケーションが左ペインに開きます。

キャプチャされた Guru99 アプリケーション画面が UIAutomatorViewer の左ペインに読み込まれました

  1. 上の画像でわかるように、ウィンドウの右側には 2 つのパネルがあります。

上部のパネルにはノード階層、つまりUIコンポーネントの配置と内包状況が表示されます。各ノードをクリックすると、下部のパネルにそのUI要素のプロパティが表示されます。

  1. 上の画像にある「クイズ」ボタンを選択すると、そのさまざまなプロパティ(テキスト、リソース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」として使用できます。

ノード詳細行には、IDロケーターとして使用されるリソースID属性値が表示されます。

その class 属性は「className」として使用できます。

クラス名ロケーターとして使用されるクラス属性値を示すノード詳細行

その コンテンツ説明 この属性は「AccessibilityId」として使用できます。

アクセシビリティIDロケーターとして使用されるcontent-desc属性値を示すノード詳細行

上記の属性に加えて、オブジェクト識別のためのXPathを記述することもできます。これらの属性名は、渡すものでもあります。 望ましい能力 スクリプトが実行された後は、ロケーター戦略を実行します。

UIAutomatorViewerの属性からXPathロケーターを構築する方法

XPathは、単一の属性だけでは一意にならない場合に用いる代替手段です。ノードの詳細パネルには、式に必要なすべての値が表示されるため、XPathは実際には既に読み取った属性を述語形式で記述したものです。

パネルの作業は、以下の順序で行ってください。

  1. 上部のパネルでノードを選択し、その内容を読み取ります。 class, 클라우드 기반 AI/ML및 고성능 컴퓨팅을 통한 디지털 트윈의 기초 – Edward Hsu, Rescale CPO 많은 엔지니어링 중심 기업에게 클라우드는 R&D디지털 전환의 첫 단계일 뿐입니다. 클라우드 자원을 활용해 엔지니어링 팀의 제약을 해결하는 단계를 넘어, 시뮬레이션 운영을 통합하고 최적화하며, 궁극적으로는 모델 기반의 협업과 의사 결정을 지원하여 신제품을 결정할 때 데이터 기반 엔지니어링을 적용하고자 합니다. Rescale은 이러한 혁신을 돕기 위해 컴퓨팅 추천 엔진, 통합 데이터 패브릭, 메타데이터 관리 등을 개발하고 있습니다. 이번 자리를 빌려 비즈니스 경쟁력 제고를 위한 디지털 트윈 및 디지털 스레드 전략 개발 방법에 대한 인사이트를 나누고자 합니다. , リソースID (NAIST) と コンテンツ説明 下段のパネルの値。
  2. 単一の安定した属性を使用することをお勧めします。resource-id が設定されている場合は、それを使用して処理を終了してください。XPath は不要です。
  3. 一意性を持たない属性は、2つの属性を1つの述語に組み合わせる。
  4. 実行時にラベルが変更された場合は、等価性テストを部分一致に切り替えます。

以下のパターンでは、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によってデバイスが検出されました」というメッセージが表示されました(下のスクリーンショットを参照)。この問題を解決するにはどうすればよいでしょうか?

UIAutomatorViewer ダイアログが、 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 は、ビューが奇妙にレンダリングされる理由が問題であり、その対処方法が問題である場合に引き続き役立ちます。スタックをまだ選択している場合は、ガイドのより広範な比較を参照してください。 モバイル アプリ テスト ツール これは良い次のステップであり、 モバイルテストケースの例 これらのロケーターが最終的に何に繋がるのかを示します。

よくあるご質問

部分的にしかできません。ビューアはネイティブのビュー階層を読み取るため、WebViewは通常、不透明なノードとして表示されます。ブラウザの開発者ツールを使用して内部のHTMLを検査するか、Webコンテキストに切り替えられるインスペクターを使用してください。

いいえ。このツールは Android デバッグブリッジと Android ビュー階層。iOS画面の場合は Appium 検査官 or Xcodeのアクセシビリティインスペクターは、代わりにXCUITest要素ツリーを読み取ります。

このコマンドは、グラフィックなしでデバイス上のXMLファイルに同じ階層構造を書き込みます。スクリプトやヘッドレスマシンでは便利ですが、適切なノードを素早く見つけるのに役立つスクリーンショットオーバーレイが失われます。

機械学習型ロケーターエンジンは、テキスト、クラス、位置、隣接ノードなど、複数の属性を総合的に評価し、いずれかの属性が変更された際に要素を再解決します。この自己修復機能により、ID名の変更によるエラーが軽減されます。

はい。属性値をコメントに貼り付けると、通常、Copilot が対応するページオブジェクトフィールドとクリックメソッドを生成します。生成されたロケーターはあくまで推測であり、検索結果ではないため、必ず実際の画面で確認してください。

いいえ。ビューアはデバイスにインストールされているビルドに対して動作するため、自分でコンパイルしていないAPKでも検査できます。ただし、resource-idやcontent-descなど、開発者が実際に設定した属性のみが表示されます。

はい。エミュレータはadbから見ると実機と全く同じように認識されるため、「デバイスのスクリーンショット」ボタンでキャプチャする方法も同じです。エミュレータは初期のスクリプト作成には便利ですが、最終的な実行は実機で行うべきです。

これにより、各コントロールに安定した言語非依存のハンドルが割り当てられ、スクリプト内のアクセシビリティIDとしても、スクリーンリーダーが読み上げるラベルとしても機能します。たった1行の変更で、テストの信頼性とアクセシビリティが向上します。