1

一部のAndroidアプリケーション(ソースコードにアクセスできない)のタイミング情報を取得するための自動テストスイートを開発しています。

MonkeyRunnerとRobotiumのどちらを使用するかはまだ決めていません。私の主な関心事は、UIでアクションを実行した後(たとえば、URLを入力した後)、Androidがいつリクエストを実行したかを判断する方法、次のアクティビティのすべてのコンポーネントを使用する準備ができており、結果を取得して取得する準備ができていることです。次のアクション(要求したページが完全にロードされている、または電子メールが完全に開かれているなど)。

Webブラウザーの場合、これは単純です。onProgressChaged()またはonPageFinished()を使用できます。しかし、私はすべてのアプリケーションで機能するより一般的な方法を探しています。Instrumentation.waitForIdleSync()またはInstrumentation.waitForIdle()がここでの最善の策かもしれないと思います。

ただし、MonkeyRunnerとRobotiumについて読んだドキュメントに関する限り、waitForIdleとうまく統合されているものはないようです。Robotiumでは、入力を送信してから出力を取得することはできましたが、出力の準備ができたことを知る簡単な方法はないようで、その時点でコールバックを呼び出す可能性があります。MonkeyRunnerもこの点で似ています。

それで、Robotiumの機能をすべて自分で再実装せずに、(ユーザーが認識したように)要求がいつ満たされたのかを知る簡単な方法があるのだろうか?

どうもありがとう。

4

2 に答える 2

0

アサートをロボティウムに入れ、タイマーのように前後に system.nanoseconds() を使用できます。

これは、タイミング情報を取得する簡単な方法かもしれません

于 2013-11-20T04:16:59.080 に答える
0

これは非常にトリッキーで、monkeyrunner に何をするように依頼したかに完全に依存する可能性があります。たとえば、monkeyrunner スクリプトがあり、電卓アプリを起動するコマンドを発行した場合、Python サブプロセスで adb logcat -b events 出力を監視して、電卓アプリが起動されたかどうかを判断できます。電卓のボタンを押すように求めている場合は、1 秒か 2 秒の睡眠をとることができます。

ただし、Android がイベントを処理したかどうかを直接判断する方法はありません。単純に、すべての操作が異なり、独自の時間がかかるためです。

于 2012-10-02T17:02:43.210 に答える