在模拟器上运行应用,UIAutomatorViewer 能找到元素 ID,脚本里找元素也大都是通过元素 ID 来获取的。
但是连接真机后运行发现运行不动,用 UIAutomatorViewer 发现真机上边所有元素都没有 ID 这一项。
这个是什么原因?难道是真机必须要有 root 最高权限吗?需要怎么做?求大神指教
需要 4.3 或以上的手机才行,之前版本不支持通过 ID 查找。这个是新手问题哦,网上有很多相关信息的。
给多一些信息啊,例如模拟器的 Android 是什么版本,真机是什么版本,没有 id 这一项具体是什么情况(发个有 id 的和没 id 的 UIAutomatorViewer 截图对比一下)?
UIAutomator 不需要 root 的。
#3 楼 @chenhengjie123 模拟器是 4.3 的,真机是小米 4.2.1,有 ID 的截图:
没有 ID 的情况就是根本没有 resource id 这一项
在 stackoverflow 找到一个比较靠谱的答案:
the explanation is android 4.3 has the id component in uiautomatorviewer. Android versions less than API level 18 will not be able to interact with the resource-id of the element.
只有 API level 18 (4.3) 以上的 UIAutomator 才能使用 resource-id
。
#5 楼 @chenhengjie123 刚找了个 4.4.2 的手机,还是没有 resource-id
#6 楼 @mzl19860128 这么奇怪?你确定你新找的手机是 Android 4.4.2 ?你再换台手机试试?
API 18 以上应该都有的。
#6 楼 @mzl19860128 更新下 Android SDK Tools,看截图是老版本,最新的界面会多几个控件。
#7 楼 @chenhengjie123 确定。。。这就是我感觉奇怪的地方,感觉跟 root 权限没有关系啊
#8 楼 @sanlengjingvv 你说的是 UIAutomatorViewer 的版本吗?
#10 楼 @mzl19860128 嗯,经他提醒确实你的 uiautomatorviewer 版本比较低(高一点的左上角应该有 4 个按钮),有可能是这个问题。
你升级后再试试?
#11 楼 @chenhengjie123 好的,我试下
#11 楼 @chenhengjie123 升级完了 uiautomatorviewer(android sdk)还是没有 resource ID。。。
#13 楼 @mzl19860128 你升级后的 Android SDK Tools 版本是多少?应该至少 24 以上了。
确认版本够高后,你用个 4.4 的模拟器试试?
虽然可能性很低,但还有可能是真机的系统对 uiautomator 部分做了更改。如果 4.4 模拟器可以那就可以排除 uiautomatorviewer 的版本问题了。
#14 楼 @chenhengjie123 模拟器是可以的,就是手机找不出来 ID,感觉很奇怪,感觉就是哪个地方少了什么设置,应该是模拟器跟真机之间的差别,难道是要把手机完全开放 root 权限?
#15 楼 @mzl19860128 这不是模拟器与真机的区别,是你的手机 ROM 和原版系统的区别。模拟器运行的是原版系统。
你再换个 4.4 的手机试试吧。