Robotframework + Appium 之常用元素定位方法
任何自动化测试,其实手动测试也是一样的,元素定位(目标定位)是首要任务,这是最直接的测试对象呀!
好了,废话不多说,又到了元素定位啦,之前我们已经介绍过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 之常用元素定位方法的更多相关文章
- 基于appium的常用元素定位方法
一.元素定位工具 app应用的元素使用的是控件定位,不同于web网页,web网页定位元素通常使用的是F12工具,那么在app当中我们则要借助其它的工具来辅助定位. 1.uiautomatorviewe ...
- Appium+Python 自动化-appium常用元素定位方法
https://www.cnblogs.com/rabbit-testing/p/8042733.html 大牛 https://blog.csdn.net/kaka1121/article/deta ...
- Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法
在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待 ...
- Appium学习笔记4_元素定位方法
Appium之元素定位,如果对Android上如何使用工具获取页面元素有问题的,请转战到这:http://www.cnblogs.com/taoSir/p/4816382.html. 下面主要是针对自 ...
- appium 元素定位方法汇总
以上图为例,要定位到右下角的 我的 ,并点击 # appium的webdriver提供了11种元素定位方法,在selenium的基础上扩展了三个,可以在pycharm里面输入driver.find_e ...
- Appium(十):元素定位(加强版)
1. 元素定位 写完上一篇元素定位的博客,发现实用性基本为零.这几天真的烦死我了,一直在找资料,还去看了一遍appium官网文档.最后结合着selenium的定位方法,测试出几种可行的元素定位方法. ...
- selenium自动化测试——常见的八种元素定位方法
selenium常用的八种元素定位方法 1.通过 id 定位:find_element_by_id() 2.通过 name 定位:find_element_by_name() 3.通过 tag 定位: ...
- 不支持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 ...
- Selenium2(WebDriver)总结(三)---元素定位方法
元素定位的重要性不言而喻,如果定位不到元素谈何操作元素呢,webdrvier提供了很多种元素定位方法,如ID,Name,xpath,css,tagname等. 例如需要定位如下元素: <inpu ...
随机推荐
- Quartz+TopShelf实现Windows服务作业调度
Quartz:首先我贴出来了两段代码(下方),可以看出,首先会根据配置文件(quartz.config),包装出一个Quartz.Core.QuartzScheduler instance,这是一个调 ...
- 第一个gulp程序
说起来惭愧,一直用公司内部的工具,没有用这些红得发紫的东西.今天东抄西拼终于搞出第一个gulp应用.gulp是做什么的,好处在哪儿我不废话了.直入主题吧. 先在D盘下建立一个xxxx目录,然后打开控制 ...
- Django入门-框架目录介绍
Django入门博客:https://www.cnblogs.com/chuangming/p/9076721.html#4098510 备注:使用 Django 框架之后,开发服务端方便了很多.我们 ...
- Saving Tang Monk II(bfs+优先队列)
Saving Tang Monk II https://hihocoder.com/problemset/problem/1828 时间限制:1000ms 单点时限:1000ms 内存限制:256MB ...
- viewstamp replication: A new primary copy method to support highly-avaliable d
为了提高服务能力或者服务稳定,往往需要把数据重复布署,也就是replication.重复带来的问题是,更新的时候会带来不一致.一种比较简单的方法是,在N台重复的机器里选一台作为主机,其他作备份,只能通 ...
- Spring框架整合WEB解决配置文件加载多次的问题
1. 创建JavaWEB项目,引入Spring的开发包.编写具体的类和方法. * 环境搭建好后,启动服务器来测试项目,发送每访问一次都会加载一次配置文件,这样效率会非常非常慢!! 2. 解决上面的问题 ...
- 生成静态页html
代码: using System; using System.Collections; using System.Collections.Generic; using System.IO; using ...
- 只有自己看的懂的vue 二叉树的3级联动
我是在vue做的数据 actions mutations state index页面获取值 传递给子页面 子页面的操作 <template> <div class='cascade_ ...
- Vue.js 与 Laravel 分离
首先表示折腾了十来天的php-laravel框架和vue的结合开发又偏前端实在是太大的阻碍,首先laravel的机制就是写完路由router再加载blade模板的.如果要在laravel工程里面加载一 ...
- url地址 参数 带 参数 注意事项 , chain , redirect , redirectAction
当 url 地址中含有 参数 时 ,若参数值是一个 含有 参数的 地址时 , 应警惕 ,如 index/goIndex!login?backUrl=/shop/goShop!go?a1=1& ...