2.1 通过判断控件属性获取控件

控件的所有属性都可以用作判断,比如它的text,index,resource-id是否clickable等,例如:

2.1.1 通过文本查找目标控件

1
2
el = driver.findElementByXPath("//android.widget.TextView[contains(@text,'note2')]");
        assertThat(el.getText(),equalTo("note2"));

2.1.2 通过index查找目标控件

如果我们像下面的方式使用index为0来查找控件note2,那么将会失败,因为该xpath只是说“我要查找页面上 android.widget.TextView类型的index为0的控件“,但如背景所说我们事实上有3个TextView控件,其中最上面的和中间 的控件他们的Index都是0.所以最终获得的控件其实是Appium第一个找到的最上面文本为”Notes“的TextView。

1
2
el = driver.findElementByXPath("//android.widget.TextView[contains(@index,0)]");
        assertThat(el.getText(),equalTo("note2"));

那么我们就要想办法加多点路径,让xpath能分辨出需要的是下面的index为0的TextView,而不是上面的。观看上图的 UIAutomatorViewer控件的分层结构,发现这两个TextView是从LinearLayout开始分叉的,所以我们应该从该路径开始通过 数组下标指定我们需要的是”在LinearLayout下面的第二个FrameLayout下面的ListView下面的Index为0的 TextView:

1
2
el = driver.findElementByXPath("//android.widget.LinearLayout[1]/android.widget.FrameLayout/android.widget.ListView/android.widget.TextView[contains(@index,0)]");
        assertThat(el.getText(),equalTo("note2"));

最新文章

  1. [原创]下拉框控件react-native-modal-dropdown更新历程
  2. 解决绝对定位div position: absolute 后面的<a> Link不能点击
  3. Python-模块的使用
  4. 支付宝地铁SDK使用失败记录
  5. 基于Verilog HDL整数乘法器设计与仿真验证
  6. tomcat虚拟路径的几种配置方法
  7. 字节的高低位知识,Ascii,GB2312,UNICODE等编码的关系与来历
  8. inner join跟where查询的区别
  9. crontab 配置
  10. 打印org.eclipse.xsd.XSDSchema对象
  11. Sublime Text3常用插件以及安装方法(实用)
  12. 什么是Css Hack?ie6,7,8的hack分别是什么?
  13. Hibernate之深入持久化对象
  14. 定期清理WordPress的文章修订版本
  15. kdtree HDU5992
  16. ES6中的箭头函数和普通函数有什么区别?
  17. Netty 系列五(单元测试).
  18. (转)Spring Boot(七):Mybatis 多数据源最简解决方案
  19. HDOJ 1754 I Hate It (线段树)
  20. ubuntu jdk 安装

热门文章

  1. postgres —— 窗口函数入门
  2. MapReduce如何解决数据倾斜?
  3. 《vue》实现动态显示与隐藏底部导航方法!
  4. 11、 Hadoop 2.x各个服务组件如何配置在那台服务器运行并测试
  5. docker 下载安装镜像
  6. Java Web 项目的文件/文件夹上传下载
  7. learning java 文件锁
  8. 桥接:JS调用安卓方法报错Uncaught Error: Error calling method on NPObject
  9. CSP2019自闭记
  10. 【洛谷P3391】文艺平衡树——Splay学习笔记(二)