应用程序需要INJECT_EVENTS权限 - 需要一个非优雅的解决方案:)

时间:2015-03-22 20:21:04

标签: ruby permissions automation calabash-android

在我正在测试的应用程序中,我可以选择向客户发送反馈。 当我使用该选项时,gmail打开然后我有点“锁在我的应用程序之外”。 当然query(“*”)返回'[]',命令press_back_button给出了上面的错误。 环顾四周,找到了一些根设备的解决方案。

对我来说,这是不可能的 - 我们正在为我们的客户开发应用程序,作为QA经理,我无法测试与最终客户端不同的环境。

所以, 我正在使用adb shell命令:

system("adb shell input text 'this%sis%san%sexample' ")

system("adb shell input keyevent 66") ---输入

system("adb shell input keyevent 4") ----回去

system("adb shell input keyevent 27") ---拍照。

(您可在此处找到整个列表 - ADB Shell Input Events

但是,我在这里工作失明。

是否有一个等同于'query'的adb shell命令?

1 个答案:

答案 0 :(得分:0)

在platforms / android-L文件夹中的android sdk中有一个名为uiautomater.jar的工具,adb可以用它来运行测试(尽管我从来没有用它)并转储可见的xml文件元件。

adb shell uiautomator dump test.xml

将创建xml文件(在设备上而不是您的计算机上),然后您可以在代码中查看该文件以检查所需的弹出窗口。如果你想与弹出窗口交互,那么你可以使用xml转储中给出的坐标来选择你想要的坐标,并使用adb touch事件来点击它。

这是从我回答的另一个问题 - Calabash handling "Complete action using" dialog中复制而来的,如果需要,还会提供更多细节。