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进行单 ...
随机推荐
- day33-python阶段性复习七
rc脚本练习 #!/usr/bin/env python #coding:utf8 import sys import os from subprocess import Popen, PIPE cl ...
- .net core webapi带权限的文件下载方法
众所周知,在webapi中,如果有个接口需要权限,一般会将带权限的字段塞进header中.但是,在带权限的文档下载接口中,无论是用post,还是get方式,我们无法设置header头信息.苦恼呀?别急 ...
- servlet运行“/*”引起的java.lang.StackOverflowError
<servlet> <servlet-name>login</servlet-name> <servlet-class>com.jd.login.UI. ...
- Java容器解析系列(1) 迭代的进化——从Enumeration到Iterator
在Java中,对于所有的Collection,都有一个特性,可以通过迭代器来遍历和删除其中的元素,因为Collection接口继承自Iterable接口. public interface Colle ...
- 划分树(poj2104)
poj2104 题意:给出n个数,有m次查询,每次查询要你找出 l 到 r 中第 k 大的数: 思路:划分树模板题 上述图片展现了查询时如何往下递推的过程 其中ly表示 [sl,l) 中有多少个数进入 ...
- Java语法基础学习DayFifteen(IO续)
一.缓冲流(处理流的一种) 1.作用:可以提高文件操作的效率 2.使用BufferedInputStream和BufferedOutputStream实现非文本文件的复制 特点:flush()方法 代 ...
- Jquery 相关笔记
//得到所有check var c = $(this).parent().find('input:checkbox'); if (c.is(':checked')) { var role = {}; ...
- 返回指针的函数 ------ 指针函数(pointer function)
指针函数: 其本质是一个函数, 其函数返回值为某一类型的指针. 定义形式: 类型 *指针变量名(参数列表): 例如: int *p(int i,int j); p是一个函数名,该函数有2个整形参数,返 ...
- 手把手教你用git
一.如何安装git 下载地址: https://git-scm.com/download/win 根据自己的电脑选择是32位的还是64位的.下载完后直接运行,之后一直next就好了.安装成功后,会有这 ...
- iOS 多语言的实现(本地化和国际化)
配置需要国际化的语言 配置需要国际化的语言,这也是国际化之前的准备工作,无论我们是国际化App名称.代码中的字符串.图片.还是storyboard和xib,都需要进行这一步的准备工作(一个项目中需要且 ...