我可以在API 16和17上轻松地在模拟器上运行我的Uiautomator测试用例。
如果我在真实设备上运行相同的测试用例,它只会卡在第一行。
getUiDevice().pressHome();
它有效时,但之后没有任何作用。我使用的是Android开发者网站上为Uiautomator编写的相同代码(http://developer.android.com/tools/testing/testing_ui.html)答案 0 :(得分:1)
使用uiautomatorviewer
转储设备主屏幕的UI层次结构。正如user2575698所说,很可能没有带有描述“Apps”的UiObject。
此外,您必须记住,Android开发者网站上的示例要求设备启用屏幕并且不存在屏幕锁定。确保屏幕打开可以通过以下方式完成:
UiDevice device = getUiDevice();
if (!device.isScreenOn()) {
device.wakeUp();
}
device.pressHome();
可以在“设置”中禁用屏幕锁定。
答案 1 :(得分:0)
也许它无法在您的真实设备上找到描述“应用”的对象,您需要为详细信息提供日志
答案 2 :(得分:0)
使用“adb shell uiautomator dump
”命令获取窗口转储。然后到SD卡并寻找转储xml。根据该值查找节点和代码的content-desc属性。 content-desc在不同的设备上可能会有所不同,因为在三星应用中它是“应用程序”,但在HTC中它是“所有应用程序”。