RobotFramework - AppiumLibrary 之元素定位
一、介绍
AppiumLibrary 是 Robot Framework 的App测试库。
它使用Appium 与Android 和 iOS应用程序进行通信,类似于Selenium WebDriver与Web浏览器的对话。
AppiumLibrary是继承和引用appiumandroidlibrary,但重新实现使用appium 1.X技术,它完全支持Python 2.7,但对python 3.3+的支持仍然是实验性的。
二、定位控件
AppiumLibrary需要在应用程序中查找元素的所有关键字都使用参数locator。
当提供locator值时,它将与特定元素类型的键属性进行匹配。支持的定位器(locator)有:
| 定位器 | 格式 | 描述 |
| identifier | Click Element | identifier=my_element | 匹配 @id 或 @name 属性 |
| id | Click Element | id=my_element | 匹配 @id 属性 |
| name | Click Element | name=my_element | 匹配 @name 属性 |
| xpath | Click Element | xpath=//UIATableView/UIATableCell/UIAButton | 匹配 XPath |
| class | Click Element | class=UIAPickerWheel | 匹配 class name |
| accessibility_id | Click Element | accessibility_id=t | 匹配 辅助选项 |
| android | Click Element | android=new UiSelector().description('Apps') | 匹配 Android UI Automator |
| ios | Click Element | ios=.buttons().withName('Apps') | 匹配 iOS UI Automation |
| css | Click Element | css=.green_button | 匹配 css in webview |
三、定位工具



四、定位元素
1. identifier 定位
说明:匹配 @id 或 @name 属性,分别对应 resource-id 和 text 属性。
案例:点击计算器数字“ 9 ”,可以使用id定位,也可以使用name定位。
| Click Element | identifier=com.android.calculator2:id/digit_9 |
| Click Element | identifier=9 |

2. id 定位
说明:匹配 @id 属性,对应 resource-id 属性。
案例:点击计算器输入框,id可以指定也可以不指定,如果不指定策略,默认就是id定位。
| Click Element | id=com.android.calculator2:id/formula |
| Click Element | com.android.calculator2:id/formula |

3. name 定位
说明:匹配 @name 属性,对应 text 属性。
案例:点击计算器数字“ 9 ”。
| Click Element | name=9 |

4. xpath 定位
说明:匹配 Xpath ,这也是功能最强大的一种定位方式,不过通常用于web自动化。
案例:点击计算器数字“ 7 ”。
| Click Element | xpath=//android.widget.Button[contains(@text,'7')] |

附加Xpath定位表达式说明:

5. class 定位
说明:匹配 class name ,对应 class 属性,但通常class属性都不唯一。
案例:点击计算器数字“ 6 ”。
| Click Element | class=android.widget.Button |

6. accessibility_id 定位
说明:匹配 辅助选项,这个方法属于Appium扩展的定位方法,主要就是content-desc属性。
案例:点击计算器加号“ + ”。
| Click Element | accessibility_id=plus |

7. android 定位
说明:匹配 Android UI Automator。
案例:点击计算器加号“ + ”。
| Click Element | android=new UiSelector().description(\"plus\") |

8. css 定位
说明:匹配 css in webview,只适用于webview的html页面,继承自webdriver。
9. ios 定位
说明:匹配 iOS UI Automation,很显然只适用于ios系统。
以上就是笔者对RF框架Appium引用控件定位总结,个人感受比较好用的定位器是id、name、xpath、accessibility_id,
其他几个相对比较局限,用的不多,其中css、ios定位笔者还未使用过,读者有兴趣可以自己去发掘一下。
RobotFramework - AppiumLibrary 之元素定位的更多相关文章
- RobotFramework自动化测试之元素定位
前言:最近在做基于RF框架的Web自动化测试,其中涉及到元素的定位,主要用到id.name.xpath.css四中定位方法,尤其后面的两种方法特别有效,可以解决大部分的定位问题. id和name定位 ...
- robotframework使用之元素定位动态ID方法
转自: http://blog.csdn.net/u011757108/article/details/53418671 一个弹出框所有元素ID竟然的动态的,关闭后再打开,里面的ID又变! 如下图: ...
- Robotframework + Appium 之常用元素定位方法
任何自动化测试,其实手动测试也是一样的,元素定位(目标定位)是首要任务,这是最直接的测试对象呀! 好了,废话不多说,又到了元素定位啦,之前我们已经介绍过selenium及appium常用的定位方法,下 ...
- RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第七篇【元素定位介绍】
http://blog.csdn.net/deadgrape/article/details/50628113 我想大家在玩自动化的时候最关心的一定是如何定位元素,因为元素定位不到后面的什么方法都实现 ...
- webview元素定位
genymotion 模拟器:android 5.0.0 python 2.7 appium 1.4.16.1 1.app原生元素定位(常用) driver.find_element_by_id(“ ...
- RobotFramework AppiumLibrary 用户关键字
RobotFramework AppiumLibrary 用户关键字 最近在用robotframework搞安卓app 的自动化,其中用到了 AppiumLlibrary 的关键字,我都映射成了用户关 ...
- [转]RF+Selenium2Library元素定位不到的问题
原文地址:http://m.blog.csdn.net/m0_37553368/article/details/78016729 在基于RobotFramework框架使用Selenium2Libra ...
- robot_framewok自动化测试--(8)SeleniumLibrary 库(selenium、元素定位、关键字和分层设计)
SeleniumLibrary 库 一.selenium 1.1.Selenium 介绍 Selenium 自动化测试工具,它主要是用于 Web 应用程序的自动化测试,但并不只局限于此,同时支持所有基 ...
- selenium元素定位篇
Selenium webdriver是完全模拟用户在对浏览器进行操作,所有用户都是在页面进行的单击.双击.输入.滚动等操作,而webdriver也是一样,所以需要我们指定元素让webdriver进行单 ...
随机推荐
- python之路---面向对象编程(一)
一.设计思想的发展 面向机器(代码复杂,效率低,学习成本高,开发周期长)-------->面向过程(扩展性差,不适用多变的需求改变)----------->面向对象(扩展性好,但是可控性差 ...
- sqlalchemy 获取表结构。
from sqlalchemy.engine import reflection insp = reflection.Inspector.from_engine(engine) colums=insp ...
- ef core code frist
https://docs.microsoft.com/zh-cn/ef/core/get-started/aspnetcore/new-db?view=aspnetcore-2.1 1.先创建对应的实 ...
- python如何实现像shell中的case功能
我们知道在shell脚本里是支持case语句,当位置参数为空时,会提示我们怎么使用脚本 那么在python怎么实现呢?也使用case吗? python里不支持case语句,但是也有实现case的方法. ...
- 深入理解之 Android Handler
深入理解之 Android Handler 一,相关概念 在Android中如果通过用户界面(如button)来来启动线程,然后再线程中的执行代码将状态信息输出到用户界面(如文本框),这时候就会抛 ...
- VIM入门
目录 一.vim介绍 二.vim颜色显示和移动光标 三.vim一般模式下移动光标 四.vim一般模式下复制.剪切和粘贴 五.进入编辑模式 六.vim命令模式 七.vim实践 一.vim介绍 vi是最重 ...
- JAVA学习笔记系列3-JVM、JRE和JDK的区别
JVM(Java Virtual Machine)就是一个虚拟的用于执行bytecode字节码的“虚拟计算机”.它和os打交道 JRE(Java Runtime Environment)包含:Java ...
- Spring Boot 常见标签
@Controller(value=“名字”,descripation="描述",tags="具体" ) @RestController控制器(path=&qu ...
- linux中运行.sql文件
1.linux目录结构 2.假设home下面有a.sql文件 先得use databasename,要不会报错 “No Database Selected” 然后source /home/a.sql ...
- C# 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC
本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 官方 ...