一、介绍

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. Appium通过 uiautomatorviewer.bat工具来查看控件的属性,该工具位于Android SDK的Tools目录下。
 
 
2. 双击打开即可,为了方便起见,建议添加快捷方式到桌面。
 
 
3. 然后USB连接真机(安装手机驱动,授权连接) 或者打开模拟器,点击获取详细布局。
 
 

四、定位元素

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 之元素定位的更多相关文章

  1. RobotFramework自动化测试之元素定位

    前言:最近在做基于RF框架的Web自动化测试,其中涉及到元素的定位,主要用到id.name.xpath.css四中定位方法,尤其后面的两种方法特别有效,可以解决大部分的定位问题. id和name定位 ...

  2. robotframework使用之元素定位动态ID方法

    转自: http://blog.csdn.net/u011757108/article/details/53418671 一个弹出框所有元素ID竟然的动态的,关闭后再打开,里面的ID又变! 如下图:  ...

  3. Robotframework + Appium 之常用元素定位方法

    任何自动化测试,其实手动测试也是一样的,元素定位(目标定位)是首要任务,这是最直接的测试对象呀! 好了,废话不多说,又到了元素定位啦,之前我们已经介绍过selenium及appium常用的定位方法,下 ...

  4. RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第七篇【元素定位介绍】

    http://blog.csdn.net/deadgrape/article/details/50628113 我想大家在玩自动化的时候最关心的一定是如何定位元素,因为元素定位不到后面的什么方法都实现 ...

  5. webview元素定位

    genymotion 模拟器:android  5.0.0 python 2.7 appium 1.4.16.1 1.app原生元素定位(常用) driver.find_element_by_id(“ ...

  6. RobotFramework AppiumLibrary 用户关键字

    RobotFramework AppiumLibrary 用户关键字 最近在用robotframework搞安卓app 的自动化,其中用到了 AppiumLlibrary 的关键字,我都映射成了用户关 ...

  7. [转]RF+Selenium2Library元素定位不到的问题

    原文地址:http://m.blog.csdn.net/m0_37553368/article/details/78016729 在基于RobotFramework框架使用Selenium2Libra ...

  8. robot_framewok自动化测试--(8)SeleniumLibrary 库(selenium、元素定位、关键字和分层设计)

    SeleniumLibrary 库 一.selenium 1.1.Selenium 介绍 Selenium 自动化测试工具,它主要是用于 Web 应用程序的自动化测试,但并不只局限于此,同时支持所有基 ...

  9. selenium元素定位篇

    Selenium webdriver是完全模拟用户在对浏览器进行操作,所有用户都是在页面进行的单击.双击.输入.滚动等操作,而webdriver也是一样,所以需要我们指定元素让webdriver进行单 ...

随机推荐

  1. .net反编译的九款神器

    本人搜集了下8款非常不错的.Net反编译利器: 1.Reflector Reflector是最为流行的.Net反编译工具.Reflector是由微软员工Lutz Roeder编写的免费程序.Refle ...

  2. python之路--迭代器和生成器

    迭代: 迭代器协议: 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代 ...

  3. [Codeforces771E]Bear and Rectangle Strips

    Problem 给你一个2*n的矩阵,要求你用补充叠的矩阵去框,要求每个矩阵框中的数之和为0,问最多可以用几个矩阵. Solution 首先预处理出一个点到离它最近的一段和为0的区间的左端点 然后到这 ...

  4. private、public、protected和默认

    类中的域最好标记为private: 方法最好标记为public: private:仅对本类可见 public:对所有类可见 protected:对本包和对所有子类可见 默认(什么都不写):对本包可见 ...

  5. Kruskal算法(题目还是:畅通工程)

    那还是先把题目丢出来,是HDU上的一道题 畅通工程 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Jav ...

  6. wc语法

    统计当前目录下的所有文件行数: wc -l * 当前目录以及子目录的所有文件行数: find  . * | xargs wc -l 可以把*改成所要匹配的文件,例如Java文件,*.java这样就只统 ...

  7. Python学习之路基础篇--02Python基础+小作业

    1 变量 变量就是将一些运算的中间结果暂存到内存中,以便后续代码调用.必须由数字,字母,下划线任意组合,且不能数字开头.不能是python中的关键字,如['and', 'as', 'assert', ...

  8. leetcode 846.Hand of Straights

    对于一个数组中的数分为W组且在每一组内的数是连续存在的. 考虑使用map映射来记录每个数的个数的,并且对于数组中的数进行从小到大的排列的.同时每次需要更新最开始的那个起始数的,可能是以及出现的也可能是 ...

  9. python print()内置函数

    啦啦啦啦啦啦,我又来了,学习任何东西都得坚持,我一定的好好加油!!! 今天来说说print()函数,前边我们已经用过好好多次啦,现在来学习哈吧!!! Python的内置函数,print() print ...

  10. Concordion test

    reference documents http://concordion.org/Example.html