记录一下如何成功识别无id、无text的元素的曲折过程
设置中的功能相对比较稳定,逻辑较简单,需求变更较少,所以打算把这个模块的功能尽量用自动化去覆盖。
操作:在个人页面中,点击“设置”菜单(点击后进入设置页面)--》点击“切换帐号”菜单(点击后进入关联帐号页面)
问题:Appium1.15.1的inspector获取的源码中,dom树中没有id和text属性,只有一个class属性:android.widget.RelativeLayout;在界面中,切换帐号这个元素不能精确定位。
尝试方案1:试着手动点击切换帐号进入关联帐号界面,再返回设置界面,刷新inspector session后,设置界面的源码中竟然显示了切换帐号这个菜单的id和class属性,而且在inspector中用id搜索也是定位到一个元素。但不管是find by id还是find by xpath(id和text组合),都是识别失败。
尝试方案2:想起天涯app很多东西都会做缓存,这个元素有没有可能是被缓存到了本地,然后进入页面的时候不重新下载,于是source中不完全显示它的属性呢?想到这里,我手动在设置中清除缓存,退出到个人页面,点击设置菜单,重新进入设置页面,然后刷新inspctor。这样反复操作了几次,确定最后inspector中可以完全显示切换帐号这个菜单的属性。在启动参数中设置noReset=False,调试......,识别失败。
尝试方案3:用xpath层级定位,路径好深。但是想着用爷爷都能定位孙子,通过曾爷爷来定位应该也是没有问题的吧。
xpath:android.widget.ScrollView/android.widget.LinearLayout/android.widget.LinearLayout[1]/android.widget.RelativeLayout[1]
还是以失败告终,按理说应该可以识别到的,下标该写的也写了,也没写错。可结果就是不行。好无奈啊!
尝试方案4:还是用xpath定位,用id先找到爷爷,然后定位到父亲,再定位到孙子
xpath:"//*[@resource-id='cn.tianya.light:id/setting_main']/android.widget.LinearLayout[1]/android.widget.RelativeLayout[1]"
终于成功识别到了这个该死的切换帐号了,内心顿时像放下一块大石头。