AppiumDriver的各种findElement方法的尝试,尝试的目标应用是SDK自带的Notepad应用。

1. findElementByName

1.1 示例

[java]  view plain copy
  1. el = driver.findElementByName("Add note");
  2. assertThat(el.getText(),equalTo("Add note"));

1.2 如何获得Name

安卓设备没有找到适合的方法,尝试用Appium Inspector,但是使用了当前最新的“AppiumForWindows-1.2.3.1”没有看到这个属性,且Inspector在Windows下面非常的不稳定,很容易crash。真心期望Appium团队尽快解决这个问题

iOS设备倒可以用Appium Inspector获得(以下图片来自网上)

1.3 建议

个人建议可以尝试先用view显示的文本作为name看是否能拿到该控件,按照我个人的经验一般都是会成功的,所以我很怀疑安卓上面控件的name是否就等于text。如果确实还是不行的话就只好放弃用name了。或者等待Appium后来的稳定的inspector发布后看是否可以获得控件的name。

这个方法在Appium1.0之后其实已经过时而要被findElementByAccessibilityId取代得了,不知道为什么还能调用,猜想是Appium团队想保留一定的兼容性以平滑过度吧。请查看:https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/migrating-to-1-0.md

2. findElementByAndroidUIAutomator

2.1 示例

[java]  view plain copy
  1. el = driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Add note\")");
  2. assertThat(el.getText(),equalTo("Add note"));

2.2 如何获得UIAutomator参数

UIAutomator获取控件的方式多种多样,都是通过UiSelector对象来去查找,比如使用view的text文本去当前窗口查找控件,这里不做累述,往后会另起一篇文章来描述UIAUtomator获取控件的方式,到时直接套用进来就可以了。

3. findElementByClassName

3.1 示例

[java]  view plain copy
  1. el = driver.findElementByClassName("android.widget.TextView");
  2. assertThat(el.getText(),equalTo("Add note"));

3.2 如何获得控件的ClassName

可以使用UIAutomatorViewer工具直接查看

3.3 建议

使用ClassName一般获得的view都不止一个,所以应该需要遍历一遍得到的views,然后缩写搜索条件来获得目标控件。示例中因为只有一个textview控件在窗口上面,所以不需要遍历。

4. findElementById

4.1 示例

[java]  view plain copy
  1. el = driver.findElementById("android:id/title");
  2. assertThat(el.getText(),equalTo("Add note"));

4.2 如何获得Resource Id

可以通过UIAutomatorViewer获得

4.3 建议

如果目标设备的API Level低于18则UIAutomatorViewer不能获得对应的Resource ID,只有等于大于18的时候才能使用。

5. findElementByAccessibilityId

5.1 示例

[java]  view plain copy
  1. el = driver.findElementByAccessibilityId("menu_add_note_description");
  2. assertThat(el.getText(),equalTo("node"));

5.2 如何获得AccessibilityId

5.3 注释

6. findElementByCssSelector

7. findElementByLinkText

8. findElementByPartialLinkText

9.findElementByTagName

10.findEelementByXPath

10.1 示例

[java]  view plain copy
  1. el = driver.findElementByXPath("//android.widget.TextView[contains(@text,'Add note')]");
  2. //el = driver.findElement(By.xpath("//android.widget.TextView"));
  3. assertThat(el.getText(),equalTo("Add note"));

10.2 XPath格式变化

从老版本的Appium0.18.x升级到现在的Appium1.x后,注意class name和xpath策略的变化:你现在需要使用FQCN来描述你的控件。也就是说原来的:

findElementByXpath(""//TextView[contains(@text,'Add note')]"")

需要改成

findElementByXpath("//android.widget.TextView[contains(@text,'Add note')]")

详细变动请查看《Appium0.18.x迁移到Appium1.x须知事项》

10.3参考

bootstraponline commented  on 13 Aug

sometimes uiautomator fails to create the dump.xml. A client side retry may help. I don't think there's much we can do about the problem until Google fixes uiautomator.

11. 终极方法:AppiumDriver getPageSource

Item

Description

Warning

Author

天地会珠海分舵

转载请注明出处!

更多精彩文章请查看本人博客!

Blog Address

http://blog.csdn.net/zhubaitian

Appium基于安卓的各种FindElement的控件定位方法实践和建议相关推荐

  1. app自动化测试——app自动化控制、常见控件定位方法

    文章目录 一.app自动化控制 1.清理数据: 2.启动: 3.关闭: 二.常见控件定位方法 1.android知识 2.ios 基础知识 3.元素定位 4.控件基础知识 5.app dom 结构解析 ...

  2. App控件定位:Android 控件介绍及元素定位方法

    本文将分享Android相关基础知识和Android APP控件定位工具的使用方法. 目录 Android基础知识 Android布局 Android四大组件 1.activity 2.Service ...

  3. appium 控件定位

    转自:http://www.2cto.com/kf/201410/340345.html AppiumDriver的各种findElement方法的尝试,尝试的目标应用是SDK自带的Notepad应用 ...

  4. SAP UI5 应用开发教程之六十二 - 基于 OData V4 的 SAP UI5 表格控件使用方法介绍试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  5. html标签手册 360doc,基于AJAX的文件上传控件NetAdvantage for jQuery

    NetAdvantage for jQuery 是一款全新的轻量级.高性能的jQuery控件,包含了在线的Video播放控件,基于AJAX的文件上传控件,快速且强大的表格控件,以及创建和编辑Word. ...

  6. recycleview横向展开_Android开发之基于RecycleView实现的头部悬浮控件

    RecyclerView是一种类似于ListView的一个滑动列表,但是RecyclerView和ListView相比,RecyclerView比ListView更好,RecyclerView支持横向 ...

  7. 基于自动驾驶需求的线控转向设计方法

    出品 | 焉知AutoTalk 本期主题为"基于自动驾驶需求的线控转向设计方法",焉知有幸邀请到了清车智行(苏州)电子科技有限公司总经理.清华大学苏州汽车研究院智能底盘所所长高峰先 ...

  8. 关于安卓接入B站弹幕控件

    关于安卓接入B站弹幕控件 环境: as 4.4.2 jdk 1.8 注意!!源码在文末!! 弹幕github官方地址地址 实现场景 通过弹幕与时间关联,实现视频弹幕的播放,滚动进度的时候,弹幕不进行清 ...

  9. 基于Bootstrap的时分秒选择控件timepicker

    基于Bootstrap的时分秒选择控件timepicker 最近项目中要用到时间选择控件,然而研究了半天并没有发现 bootstrap-datetimepicker 控件只选择时分秒的配置方法.自己动 ...

最新文章

  1. 在线音频“三国争霸”,谁能率先登陆资本市场?
  2. Struts2中的链接标签
  3. 【树】判断给定森林中有多少棵树(简单做法)
  4. php无限次执行函数,php – 防止多次执行JavaScript函数
  5. 11 wifi6速率_什么是WiFi 6?究竟有多6?
  6. SSH Backgroup工具汇总
  7. 无法定位软件包python-pip
  8. 关于studio 3T
  9. vue 前端导出xlsx文件
  10. 加域电脑激活指纹识别
  11. iOS多控制器-视图切换.
  12. Linux下dislocate命令用法,dislocate
  13. 文章-编程需要知道多少数学知识?
  14. ASP.net 密码加密和使用密码登录
  15. 中山大学3D游戏设计读书笔记 unity3D Note2
  16. 泛泛而谈的渲染学习记录(二)—— 高斯模糊卷积的线性分解理解
  17. Git常用命令及其作用_艾孜尔江撰
  18. 巡逻机器人(Patrol Roboot,UVa1600)
  19. 什么是网关?网关的作用?
  20. 【Python123】 存款买房(B)

热门文章

  1. 二进制正负数转换和移位的规则详解
  2. php流量图形化,用php引用cacti中的网络流量图表
  3. 记录一次wine安装(下列软件包有未满足的依赖关系: winehq-stable : 依赖: wine-stable (= 5.0.0~bionic))
  4. 计算机科学就是关于计算机的学问,【遇见男神】计算机科学与工程学院国奖获得者颉满刚:做人、做事、做学问...
  5. FFmpeg - ./configure编译参数全部总结和整理
  6. 数字信号处理概述(整理《学以致用·深入浅出数字信号处理》)
  7. PLC通过编码器反馈值计算速度的推荐做法(算法解析+ST代码)
  8. 禁用计算机f1-f12,Win10系统禁用F1到F12热键 将F1到F12多媒体键转变为功能键的方法...
  9. BlackBerry 10 BlackBerry OS 7 1 手机通过蓝牙串口读取Arduino 蓝牙传过来的温度
  10. UE4蓝图切换玩家行走跑步姿势