在Android中测量应用程序响应时间/等待下一个活动就绪?

在Android中测量应用程序响应时间/等待下一个活动就绪?,android,automated-tests,robotium,monkeyrunner,Android,Automated Tests,Robotium,Monkeyrunner,我正在开发一个自动测试套件,以获取一些Android应用程序的时间信息,这些应用程序的源代码我无法访问 我还没有决定是使用MonkeyRunner还是Robotium。我主要关心的是在我在UI上执行一个操作后,比如键入一个URL,如何确定Android何时满足了我的请求,下一个活动的所有组件都已准备好使用,我已准备好获取结果并采取下一个操作,比如我请求的页面已完全加载,或者电子邮件已完全打开 对于web浏览器,这很简单,我可以只使用onProgressChaged或onPageFinished。

我正在开发一个自动测试套件,以获取一些Android应用程序的时间信息,这些应用程序的源代码我无法访问

我还没有决定是使用MonkeyRunner还是Robotium。我主要关心的是在我在UI上执行一个操作后,比如键入一个URL,如何确定Android何时满足了我的请求,下一个活动的所有组件都已准备好使用,我已准备好获取结果并采取下一个操作,比如我请求的页面已完全加载,或者电子邮件已完全打开

对于web浏览器,这很简单,我可以只使用onProgressChaged或onPageFinished。但我正在寻找一种更通用的方法,适用于所有应用程序。我认为Instrumentation.waitForIdle同步或Instrumentation.waitForIdle可能是我最好的选择

然而,就我阅读的关于MonkeyRunner和Robotium的文档而言,它们似乎都没有很好地与waitForIdle集成。在Robotium中,我可以发送一些输入,然后获取输出,但似乎没有一种简单的方法让我知道输出何时准备就绪,并可能在此时调用回调。MonkeyRunner在这方面也很相似

因此,我想知道有没有一种简单的方法可以让我知道用户认为我的请求在什么时候得到了满足,而不用我自己重新实现Robotium功能


非常感谢

这可能非常棘手,完全取决于您要求monkeyrunner做什么。 例如,如果您有一个monkeyrunner脚本,并发出了启动计算器应用程序的命令,那么您可以使用一个python子流程监控adb logcat-b事件输出,以确定计算器应用程序是否已启动。如果您要求按下计算器中的一个按钮,您可以睡眠1或2秒


但是没有直接的方法来确定android是否已经处理了你的事件。简单地说,每个操作都是不同的,需要花费自己的时间。

您可以将断言放入robotium中,然后像计时器一样在前后使用system.nanoseconds


这可能是获取计时信息的一种简单方法

:我认为Instrumentation.waitForIdle可能在这里起作用,它会等到UI线程没有更多的事件要处理。但它似乎既不是猴子也不是机器人。另外,当WebBroser加载页面时,UI线程是否会以某种方式等待页面并在其队列中挂起某种事件?