zoukankan      html  css  js  c++  java
  • 记录一下如何成功识别无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]"

    终于成功识别到了这个该死的切换帐号了,内心顿时像放下一块大石头。

  • 相关阅读:
    vue基础八(路由组件)
    vue基础(七),同源策略以及跨域,vuex
    如何将注释的代码折叠
    axios发请求的基本语法:
    vue基础(六)全局事件总线
    vue基础(五),对todos的操作
    Android仿IOS的AssistiveTouch的控件EasyTouch实现
    CentOS下配置HTTPS访问主机并绑定访问端口号
    Effective Java:对于所有对象都通用的方法
    物联网操作系统HelloX开发者入门指南
  • 原文地址:https://www.cnblogs.com/my-testing-life/p/12703457.html
Copyright © 2011-2022 走看看