1

私が持っているアプリの自動化スクリプトを書き込もうとしています。Robotiumのサイトでチュートリアルを行い、自動化の方法について基本的な知識を持っています。ただし、テストしているアプリに関して私が知ることができるのは、Android階層ビューアーを使用することです。すべてのビューには、明示的に定義されたIDがないことがわかります。サンプル階層

スクリーンキャプチャからわかるように、ネストされたビューにビューがあります。それらのIDは、0x17e0または0x17deのように読み取られます。具体的には、robotiumスクリプトでこれらを参照するにはどうすればよいですか?最終結果は、テキストスイッチャービューの1つでもクリックを発生させようとしていることです。これまでのところ、移動するピクセルポイントを指定するか、ボタンに表示されるテキストを指定した場合にのみ機能させることができました(ただし、テキストは動的であり、テストが不十分になります)。

getCurrentViews()を使用して、テキストスイッチャーにフィルターをかける必要がありますか?または、FrameLayout> RelativeLayout> FrameLayout> LinearLayout> TextSwitcherからツリー全体をトラバースする方法を理解する必要がありますか?

ツリー全体をトラバースする必要がある場合、ビューごとにビューを取得するにはどうすればよいですか?

4

3 に答える 3

1

ViewGroup()メソッドとgetChildAt()メソッドを機能させることができませんでしたが、最終的には別のことをしました。

// Grabbing all the LinearLayout views found under view with with id of 'content' 
ArrayList<LinearLayout> linearLayouts = solo.getCurrentViews(LinearLayout.class, solo.getView(R.id.content));

// The 4th item in the linearLayouts list is the one I need
View pickerList = linearLayouts.get(3);

// Grabbing the buttons in the pickerList
ArrayList<TextSwitcher> buttons = solo.getCurrentViews(TextSwitcher.class,pickerList);

// Now I can click on the buttons
solo.clickOnView(buttons.get(0));

これは遅いと思います。最初のボタンクリックが起動するまで約10秒かかります。しかし、それが行くとそれは飛ぶ。

于 2013-03-25T20:27:38.820 に答える
0

おそらく、階層内のどこかにいくつかのIDを追加したいと思うでしょう。これは、1行の変更であり、あなたの生活が非常に楽になります。

しかし、何らかの理由でこれを行うことができない場合、私は助けがないわけではありません。これを行うには、必要なビューに到達するために全体を歩く必要があります。

トップレベルのビューを取得すると、それをViewGroupにキャストできるようになります。ViewGroupsにはgetChildAt()というメソッドがあり、これを使用して特定のインデックスで子を取得できます。インデックスは0ベースであり、階層ビューアに表示されるものと一致するため、これらのコマンドをチェーンしてビューにアクセスできます。と対話したい。

于 2013-03-25T15:04:49.553 に答える
0

私はRobodtiumをあまり使用していませんが、AndroidViewClientがまさにあなたが望むことをすることを知っています。ホームビューのIDをダンプするコードスニペットは次のとおりです。

ViewClient(*ViewClient.connectToDeviceOrExit()).traverse(transform=ViewClient.TRAVERSE_CIT)

結果のダンプは次のとおりです。

com.android.launcher2.CellLayout id/cell3 None
     com.android.launcher2.ShortcutAndWidgetContainer NO_ID None
         com.android.launcher2.BubbleTextView NO_ID Email
         com.android.launcher2.LauncherAppWidgetHostView NO_ID None
             android.widget.AnalogClock id/0x7f0f0014 None
         com.android.launcher2.BubbleTextView NO_ID Camera
         com.android.launcher2.BubbleTextView NO_ID Settings
         com.android.launcher2.BubbleTextView NO_ID Gallery
         com.android.launcher2.LauncherAppWidgetHostView NO_ID None
             android.widget.LinearLayout id/0x7f080167 None
于 2013-03-25T15:11:04.370 に答える