任何自动化测试,其实手动测试也是一样的,元素定位(目标定位)是首要任务,这是最直接的测试对象呀!

好了,废话不多说,又到了元素定位啦,之前我们已经介绍过selenium及appium常用的定位方法,下面再单独介绍下Robotframework-AppiumLibrary常用元素定位方法,其实它们的思想是一样的,只是格式上有些差异,详情如下:

AppiumLibrary需要在应用程序中查找元素的所有关键字都使用参数locator。当提供locator值时,它将与特定元素类型的键属性进行匹配。

常用支持的定位(locator)方法有:
  注:robotframework-appiumlibrary    1.4.6    (本文基于此版本)

  Android应用可以通过 uiautomatorviewer.bat工具来查看控件元素的属性,该工具位于Android SDK的Tools目录下。

1、id 定位   (本篇还是以之前的Calculator为例)

  说明:匹配 @id 属性,对应 resource-id 属性。

  案例:点击计算器数字“ 9 ”,id可以指定也可以不指定,如果不指定策略,默认就是id定位。

  数字“ 9元素属性如下:

  

  Click Element    id=com.android.calculator2:id/digit_9

  Click Element    com.android.calculator2:id/digit_9

2、xpath 定位

  说明:匹配 Xpath ,这也是功能最强大的一种定位方式。

  案例:点击计算器数字“ 9 ”。又有下面几种方式:

  1)、如果元素text是唯一的,可直接通过text文本定位

  Click Element     xpath=//*[@text='9']

  2)、通过resource-id来定位

  Click Element     xpath=//*[@resource-id='com.android.calculator2:id/digit_9']

  3)、通过class来定位,如果唯一的,不然还需要搭配其它的属性

  Click Element     xpath=//android.widget.Button[@text='9']        因为class不是唯一的,所以这里加上text

  4)、通过content-desc来定位,如点击计算器“+”号,其中元素属性如下:

  

  Click Element     xpath=//*[@content-desc='plus']

  5)、通过contains匹配来定位

  Click Element    xpath=//*[contains(@text,'9')]        匹配text

  Click Element     xpath=//*[contains(@content-desc,'plus')]     匹配content-desc

  Click Element     xpath=//*[contains(@resource-id,'id/op_add')]  模糊匹配resource-id

  6)、组合定位

  Click Element     xpath=//*[@text='+'][@content-desc='plus']  组合text和id

3、uiautomator定位

  说明:通过uiautomator方式 ,这也是功能强大的一种定位方式。

  案例:点击计算器数字“ 9 ”。与xpath一样,也有下面几种方式:

  1)、通过text定位

  Click Element    android=new UiSelector().text("9")

  2)、通过resource-id来定位

  Click Element    android=new UiSelector().resourceId("com.android.calculator2:id/digit_9")

  3)、通过content-desc来定位,如点击计算器“+”号

  Click Element    android=new UiSelector().description("plus")

  4)、组合定位

  Click Element    android=.resourceId("com.android.calculator2:id/digit_9").text("9")      resource-id与text组合

  Click Element    android=.className("android.widget.Button").text("9")  class与text组合

4、accessibility_id定位

  说明:这属于Appium扩展定位方法,主要是用content-desc属性。

  案例:如点击计算器“+”号

  Click Element    accessibility_id=plus

综上,是Robotframework-AppiumLibrary 几种比较常用元素定位方法,在实践过程中多多尝试,熟能生巧,便可以事半功倍。

  

  

  

  

  

Robotframework + Appium 之常用元素定位方法的更多相关文章

  1. 基于appium的常用元素定位方法

    一.元素定位工具 app应用的元素使用的是控件定位,不同于web网页,web网页定位元素通常使用的是F12工具,那么在app当中我们则要借助其它的工具来辅助定位. 1.uiautomatorviewe ...

  2. Appium+Python 自动化-appium常用元素定位方法

    https://www.cnblogs.com/rabbit-testing/p/8042733.html 大牛 https://blog.csdn.net/kaka1121/article/deta ...

  3. Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法

    在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待 ...

  4. Appium学习笔记4_元素定位方法

    Appium之元素定位,如果对Android上如何使用工具获取页面元素有问题的,请转战到这:http://www.cnblogs.com/taoSir/p/4816382.html. 下面主要是针对自 ...

  5. appium 元素定位方法汇总

    以上图为例,要定位到右下角的 我的 ,并点击 # appium的webdriver提供了11种元素定位方法,在selenium的基础上扩展了三个,可以在pycharm里面输入driver.find_e ...

  6. Appium(十):元素定位(加强版)

    1. 元素定位 写完上一篇元素定位的博客,发现实用性基本为零.这几天真的烦死我了,一直在找资料,还去看了一遍appium官网文档.最后结合着selenium的定位方法,测试出几种可行的元素定位方法. ...

  7. selenium自动化测试——常见的八种元素定位方法

    selenium常用的八种元素定位方法 1.通过 id 定位:find_element_by_id() 2.通过 name 定位:find_element_by_name() 3.通过 tag 定位: ...

  8. 不支持find_element_by_name元素定位方法,抛不支持find_element_by_name元素定位方法,会抛如下错误 org.openqa.selenium.InvalidSelectorException: Locator Strategy 'name' is not supported for this session的解决

    appium1.5后不支持find_element_by_name元素定位方法,会抛如下错误 org.openqa.selenium.InvalidSelectorException: Locator ...

  9. Selenium2(WebDriver)总结(三)---元素定位方法

    元素定位的重要性不言而喻,如果定位不到元素谈何操作元素呢,webdrvier提供了很多种元素定位方法,如ID,Name,xpath,css,tagname等. 例如需要定位如下元素: <inpu ...

随机推荐

  1. Winform 两个窗体通讯 一个窗体调用另一个窗体的方法

    主要用到 委托 和 注册事件. 功能:点击form1的按钮,改变form2的label文本

  2. 【Java杂记】Equals 和 hashCode

    equals 和 hashCode含义 equal:判断两个对象是否相等,如果相同,返回true 否则返回false hashcode: 返回一个int数 Object 默认(内部地址转化为一个数字) ...

  3. linux sleep用法

    应用程序:#include <syswait.h>usleep(n) //n微秒Sleep(n)//n毫秒sleep(n)//n秒驱动程序:#include <linux/delay ...

  4. EasyUI多选的获取

    function deletePRE() { var rows = $('#dg').datagrid('getSelections'); var ids = []; var other_ids = ...

  5. U盘做启动盘后,恢复原始容量

    借助u盘进行系统安装时,可能会对u盘进行分区.u盘分区后,再连接至电脑,就有很大程度的可能是一部分区域不能显示.u盘原本的大小被占据,显示的大小是比之前少了的,并且这些少掉了的内存也无法再使用.只有对 ...

  6. Metropolis(多源点最短路)

    Metropolis https://www.nowcoder.com/acm/contest/203/I 题目描述 魔方国有n座城市,编号为.城市之间通过n-1条无向道路连接,形成一个树形结构. 在 ...

  7. Python错误:close failed in file object destructor

    我遇到的情况: 二进制程序调shell再调Python后,shell退出,Python进程挂到init上(不是僵尸进程),但 此时二进制程序未退出,这时候中断而二进制程序出现此提示. 经查询: 应该是 ...

  8. 清空表中数据 id从1开始

    删除表的记录以后,如何使新记录的编号仍然从1开始有两种方法: 方法1: truncate table 你的表名 --这样不但将数据删除,而且可以重新置位identity属性的字段. 方法2: dele ...

  9. 零基础学习hadoop到上手工作线路指导(初级篇)

    零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...

  10. 【深度好文】多线程之WaitHandle-->派生-》Mutex信号量构造

    bool flag = false; System.Threading.Mutex mutex = new System.Threading.Mutex(true, "Test", ...