在Appium desktop 测试中,会经常遇到元素不能准确定位的问题,以百度地图为测试实例,当进入主界面后,要定位 "退出“ 这个 element,通过 appium desktop 去定位时,如下图,看似定位到 id值为 ‘com.baidu.BaiduMap:id/dz6’ ,但再看 class 值其实为边框框架,因此经过测试,虽然能成功定位没有出现报错信息,但是却没有成功点击到 "退出”。
尝试用 uiautomatorviewer 去定位 "退出“, 就能精确定位到 id值为 com.baidu.BaiduMap:id/byo,如下图 。 因此当用 appium desktop 定位不到时时候,可以尝试用 uiautomatorviewer 去定位,虽然说 appium desktop 是 uiautomatorviewer 的升级,但方法不是唯一,多尝试总能把问题解决。
如上所介绍,可以调用 uiautomatorviewer,但 uiautomatorviewer 和 appium desktop 不可以同时打开,如果要经常转换,会降低效率。虽然说有时在 appium desktop 定位不到元素,但并不代表你要找的元素不存在,因为源码是没有变的。尝试定位 “退出” 旁边的小圆点,如下图可见,这个小圆点,并没有 id 值,但可以通过 xpath 定位都可以实现同样的效果。
在刚才图中的 <android.widget.ImageView> 上面,其实就可以找到 id值为 com.baidu.BaiduMap:id/byo,如下图,正是 "退出“这个元素的方框。
因此当 appium desktop 手动定位失败时,除了尝试转用 uiautomatorviewer外,还可以尝试观察附近的源码去判断定位的元素。