web-dev-qa-db-ja.com

UIAutomatorviewerをテストに使用する際のエラーAndroid Appiumのアプリ

Androidアプリケーションを自動化する必要があります。Appiumを介して同じことをしています。Appiumサーバーを起動した後、アプリがエミュレーター4.4.2にインストールされます。 SDKにデフォルトで付属しているUIAutomatorviewerを使用している要素を検査しますが、アプリの要素を検査しているときにエラーが発生します![ここに画像の説明を入力してください] [1]

Error obtaining UI hierarchy
Reason:Error while obtaining UI hierarchy XML file.com.Android.ddmlb.SynchException.Remote object doesn't exist.

スクリプトを作成できるように要素を検査できるように解決策を見つけようとしましたが、無駄でした。

  1. 誰かが私が要素を検査できるように問題を修正する方法を教えてもらえますか?
  2. UIAutomatorビューアを使用する以外に、アプリ内の要素を検査できる他の方法はありますか?
16
Rancho

Uiautomatorビューアーで試した後、次の場合にのみエラーが発生することがわかりました。

appiumサーバーが実行されており、uiautomatorviewerを使用してスクリーンショットをキャプチャしようとします。

したがって、uiautomatorviewerを使用するときは、サーバーが停止状態にあることを確認してください。

28
Rancho

次の方法を使用して同じ問題を修正しました。

(1)Androidデバイスを開発マシンに接続します。

(2)ターミナルのコマンドラインまたはWindowsのDOSコマンドラインに移動します。

(3)「adb Shell」を使用してAndroidデバイス;

(4)コマンドラインに「su root」と入力して、ユーザーをrootに変更します。

(5)「chmod 777/data/local/tmp」を入力して、アクセス権を/ data/local/tmpに変更します。

(6)uiautomatorviewerに戻って、スクリーンショットを再度実行すると、エラーが解消されます。

/ data/local/tmpに権利がない場合、アクセスできないファイルがあると思います。

11
Damon Song

画面上のすべてが静的であることを確認してください。また、入力カーソルの点滅も許可されていません。ペインティングアクションは、uiautomatorが現在のUIをダンプするのを停止します。

次のadbコマンドを使用してテストできます。

adb Shell uiautomator dump /data/local/tmp/uidump.xml

メッセージERROR: could not get idle state.が表示され、あなたはこの問題に苦しんでいます。

DumpCommand の87行目と101行目を参照してください。

try {
  ...   
  uiAutomation.waitForIdle(1000, 1000 * 10);
  ...
} catch (TimeoutException re) {
  System.err.println("ERROR: could not get idle state.");
  return;
}
8
Shawn.G

Appium Serverを停止します。その後、再試行してください。できます。

4
Santosh Pillai

質問への回答#2Androidアプリを実際のAndroidデバイスから直接検査できます。

必要がある:

  • Androidデバイスをコンピューター/ラップトップに接続します
  • Androidデバイス設定に移動->開発者オプションおよびAndroidデバッグを有効にする

こちらをご覧ください:
Android device settings

  • Androidデバイスで検査するアプリを起動します

  • コンピューター/ラップトップでChromeブラウザーを開き、右クリック->その他のツール->デバイスの検査->デバイスをクリック->(AndroidデバイスOK許可する)-> Inspectをクリックします

こちらをご覧ください: Inspect whatever from your Android device

それでおしまい。それが役に立てば幸い!

2
Stipe

また、同じ問題が発生しました(Appium Serverが実行されていない場合も)。切り替え後、USBデバッグのOFF/ONが機能していました。

1
Kumar

「adbd insecure」を使用したため、同じ問題が発生しました。だから私は「adbd insecure」を無効にして、uiautomatorviewerをリロードしました。

1
na zeng

解決しました

マシンで実行中のAppium Serverを閉じて、再度開きました。後でuiautomaterを開き、それは私のために働いた

1
Piyush Jeswani

私はこの問題を解決するために一週間以上費やしました。デバイスを接続し、ASM 3.0を使用している場合、画面が投影されたら、UIAutomatorを開いて現在のAndroid画面をキャプチャします。 Appiumがなければ、キャプチャする必要があります。 Android SDKの代わりにAndroid St​​udioを使用します。 Android St​​udioをアンインストールして再インストールします。今では私にとって完璧に機能しています。

1
Shrini Pandhare

ルート化されたデバイスの場合:adbの開発者オプションでルートアクセスを有効にします。ルートとしてadbを再起動します

1
user1302884

電話の「開発者オプション」でこれらを有効にしたかどうかを確認してください。

  1. USB経由でアプリを確認する
  2. 属性検査を表示する
  3. USBデバッグ
0

エラーを回避する方法:

アイドル状態を取得できませんでした。

Uiautomatorを使用して、uixとスクリーンショットを取得します。

public class DeviceMethods extends UiAutomatorTestCase {
public void dump(){


    try {
        getUiDevice().dumpWindowHierarchy("window_dump.uix") ;
        getUiDevice().takeScreenshot(new File("/data/local/tmp/window_dump.png"));


    } catch (Exception e) {

    }

}

uiautomator jarを作成して/ data/local/tmpにプッシュする必要があります

このチュートリアル uiautomatorの使用方法を使用します

ファイルを取得したら、uiautomatorviewerでファイルを開きます

0
YoShade

1)appium Serverを停止します

2)エミュレーターデバイスを開く

3)設定>開発者オプション>ビュー属性検査を有効にする

4)開発者向けオプションは非表示ですか?設定に移動>デバイス/電話についてをタップ>最後のオプション(ビルド番号)まで下にスクロール>連続して「ビルド番号」を7回タップ>トーストメッセージ「あなたは開発者です」が表示されます>その画面>設定に戻る>開発者向けオプションが表示されるはずですタップする>ビュー属性検査を有効にする

5)このエラーメッセージは表示されなくなります

0
Jagadeesh

これは、adbがポートを使用しており、appiumサーバーによってブロックされているために発生します。

これに最適なソリューションを見つけました

タスクバープロセスからadb.exeを強制終了し、uiautomatorviewerを再度起動してください

0
Praveen Chauhan

動作するのは次のパスです:

Android/Sdk/tools/bin/uiautomatorviewer

これを端末に貼り付けると、オートマトンが動作します

0
Sajid Zeb

aPIレベルが17以上のデバイスまたはJelly Beanを使用する必要があります

0
Pawan Rajen

私のために働いたもの:

アピウムをやめる
エミュレーターデバイスを開きます(Android 7.1.1でテスト済み)
設定>開発者オプション>ビュー属性検査を有効にする
OSに応じて、コンピューター、cmd、またはターミナルでシェルを開きます
次のコマンドを入力します。
adbシェル
su
cd/data
cd/local
chmod 777 tmp

uiautomatorviewerを起動します
xmlスクリーンショットを撮る

「su chmod 777/data/local/tmp」は機能しなかったので、ドリルダウンして機能しました。
デバイスがルート化されていない限り、物理デバイスではなくエミュレーターでこれを行う必要があると思います。 ¯\ _(ツ)_ /¯

ロッツァ・ラック!

0
Adam Deane