1

我正在开发一个自动化测试套件来获取一些 Android 应用程序(我无权访问其源代码)的时间信息。

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

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

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

所以我想知道是否有一种简单的方法可以让我知道我的请求什么时候得到满足(如用户所感知的那样),而无需我自己重新实现 Robotium 功能?

非常感谢。

4

2 回答 2

0

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

但是没有直接的方法可以确定 android 是否处理了您的事件。仅仅是因为,每项操作都不同,需要自己的时间。

于 2012-10-02T17:02:43.210 回答
0

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

这可能是获取时间信息的简单方法

于 2013-11-20T04:16:59.080 回答