【发布时间】:2012-03-19 05:02:13
【问题描述】:
我已经学习 Android 几个月了,特别是测试 Android 应用程序的不同方法。到目前为止,我使用过 JUnit 和 Robotium。我已经学会了很好地使用 Robotium,甚至用于测试黑盒应用程序,我认为它真的很酷。但是,在使用 Robotium 测试黑盒应用程序时,单击按钮的唯一方法是使用其标签、坐标或索引。问题是,如果按钮是图像按钮,那么我不能使用它的标签,而且我担心由于屏幕尺寸不同,使用坐标不会让我在不同的设备上运行我的测试,所以视图可能缩放时放置在不同的位置。 所以,这让我只剩下索引(除非......还有另一种我可能还不知道的方法?),但问题是我无法知道视图的索引,到目前为止我唯一的方法'我想得到一个按钮的索引是通过编写一个测试告诉 Robotium 点击索引为 0,然后是 1 的按钮,然后我可以识别模式并自行计数,直到我得到我想要的按钮的索引。
但是,由于这很麻烦(特别是如果我有几个按钮),我正在尝试构建一个工具,允许我在单击时识别视图及其索引,例如,假设我正在测试音乐播放器,我想告诉 Robotium 点击“播放”按钮,因为它是一个图像按钮,我会将索引号作为参数发送给 clickOnImageButton(int index),但我不知道它的索引,所以我如果可能的话,将单击它,此工具将打印类似“您单击索引为 3 的 ImageButton”的内容。
现在,我的问题来了,有什么方法可以做到这一点吗?我试图创建一个服务并使用它来捕获点击事件,但后来我读到了这篇文章:Android detecting the touch state from any application,所以似乎是为了安全原因是不可能的,因为我相信我当然需要从其他应用程序及其视图元素中捕获点击事件。我试图查看logcat是否提供此信息但它没有,最后我尝试使用来自adb的getevent但它的输出很难理解,而且getevent的输出似乎也是坐标,有什么办法可以根据其坐标获取视图及其索引?我一直在尝试寻找关于猴子如何工作的解释,以防万一那里有什么可能会有所帮助,但我找到的所有文档都与如何使用它有关,而不是与它如何工作有关。我想知道你们中是否有人知道 Testdroid 或任何记录/回放工具如何设法捕获这些点击并在不同的设备上重现它们。
【问题讨论】:
标签: android events service capture robotium