Appium的常用定位方法
使用uiautomatorviewer.bat工具来找到属性定位元素,在SDK的tools目录下找到该工具,双击打开。左边框内展示app的界面元素,右上角框内展示元素的层级关系,右下角框内展示元素的属性。
1.使用id定位元素
resource-id代表id属性,使用方法:
driver.findElement(By.id("com.android.calculator2:id/digit5")).click();//点击5
2.使用name定位元素
text代表name属性,使用方法:
driver.findElement(By.name("5")).click();
3.使用class定位元素
class就是class属性,class属性定位出元素有可能有很多,定位到某一个元素需要其他条件,使用方法:
- @Test
- public void testcase3(){
- List<WebElement> list = driver.findElements(By.className("android.widget.Button"));
- for (WebElement elem:list){
- System.out.println(elem);
- }
- }
4.使用xpath定位元素
需要注意:Appium中属性class的代表标签的名字,下标是从1开始的。
元素的属性具有唯一性时:
driver.findElement(By.xpath("//android.widget.TextView[contains(@resource-id,'com.android.mms:id/action_compose_new')]")).click();
driver.findElement(By.xpath("//android.widget.TextView[@text='New message']")).click();
xpath定位中的标签之间的父子关系和兄弟关系:
图中框1中的三个标签是兄弟关系,框2中的两个标签为父子关系。
兄弟关系:
如果想定位最后一个LinearLayout,可以使用preceding-sibling::表示定位当前标签的哥哥标签,following-sibling::表示定位当前标签的弟弟标签,方法如下:
driver.findElement(By.xpath("//android.widget.FrameLayout[1]/following-sibling::android.widget.FrameLayout[2]")).click();
通过following-sibling找到第一个标签LinearLayout的第二个弟弟,也就是定位第三个LinearLayout标签。
同理定位第一个标签,通过找到第三个标签的第二个哥哥,就是第一个LinearLayout标签。
driver.findElement(By.xpath("//android.widget.FrameLayout[3]/preceding-sibling::android.widget.FrameLayout[2]")).click();
上面的两种情况可能不适合使用preceding-sibling::和following-sibling::,只是用来举例它们的使用方法。
父子关系:
如果想定位TextView标签,可以使用parent::或者..表示父亲标签,定位框2中的TextView标签。
driver.findElement(By.xpath("//android.widget.FrameLayout[2]/parent::android.view.View/android.widget.FrameLayout[3]/android.widget.TextView")).click();
通过parent::找到第二个LinearLayout的父标签View,父标签的第三个子标签LinearLayout的第一个子标签就是TextView标签。
5.Accessibility ID定位,Appium的扩展方法
找到元素的content-desc属性来定位。
- driver.findElement(By.name("7")).click();
- driver.findElementByAccessibilityId("divide").click();
- driver.findElement(By.name("2")).click();
- driver.findElementByAccessibilityId("equals").click();
6.使用AndroidAutomator定位,Appium的扩展方法
description就是content-desc属性。
- driver.findElementByAndroidUIAutomator("new UiSelector().text(\"9\")").click();
- driver.findElementByAndroidUIAutomator("new UiSelector().description(\"plus\")").click();
- driver.findElementByAndroidUIAutomator("new UiSelector().resourceId(\"com.android.calculator2:id/digit6\")").click();
- driver.findElementByAndroidUIAutomator("new UiSelector().description(\"equals\")").click();
参考博客:https://testerhome.com/topics/7129
https://www.cnblogs.com/testway/p/6225415.html
http://www.testclass.net/appium/appium-base-find-element/#

Appium的常用定位方法的更多相关文章
- Appium Android 元素定位方法 原生+H5
APPIUM Android 定位方式 1.定位元素应用元素 1.1通过id定位元素 Android里面定位的id一般为resrouce-id: 代码可以这样写: WebElement eleme ...
- python+selenium实现163邮箱登陆—iframe动态ID定位 及常用定位方法
今天发现之前的登录163邮箱脚本定位不到iframe了,原因是iframe拼接了动态ID,修改后的脚本如下: from selenium import webdriver driver = webdr ...
- Selenium3+python自动化007-Selenium常用定位方法
自动化测试只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.元素定位在这四个环节中是至关重要的,如果说按学习精力分配的话,元素定位占70%:操 ...
- 【APP自动化】Appium Android 元素定位方法 原生+H5
参考资料: http://blog.csdn.net/vivian_ljx/article/details/54410024
- selenium 之定位方法
1 id 定位 driver.find_element_by_id() HTML 规定id 属性在HTML 文档中必须是唯一的.这类似于公民的身份证号,具有很强的唯一性 from selenium i ...
- xpath定位方法小结(转载)
1.实例化一个浏览器WebDriver driver = new FirefoxDriver(); 2.driver.get() get传参数到浏览器中 3.常用定位方法webelement XX=d ...
- Robotframework + Appium 之常用元素定位方法
任何自动化测试,其实手动测试也是一样的,元素定位(目标定位)是首要任务,这是最直接的测试对象呀! 好了,废话不多说,又到了元素定位啦,之前我们已经介绍过selenium及appium常用的定位方法,下 ...
- 基于appium的常用元素定位方法
一.元素定位工具 app应用的元素使用的是控件定位,不同于web网页,web网页定位元素通常使用的是F12工具,那么在app当中我们则要借助其它的工具来辅助定位. 1.uiautomatorviewe ...
- Python Appium 元素定位方法简单介绍
Python Appium 元素定位 常用的八种定位方法(与selenium通用) # id定位 driver.find_element_by_id() # name定位 driver.find_ ...
随机推荐
- hl7 v2.X 版本中RSP_K23消息的构造
RSP_K23消息有MSH, MSA, ERR, QAK, QPD, PID几个segment,其中ERR,PID为可选. 1. 当MSA有err时,ERR段填充出错的详细信息. 2. 当MSA为AA ...
- GUI练习中
总结:JFrame和Frame是有很大差别的. 不要混淆.否则方法是不能成功调用的 特别是背景色:JFrame.对象f在main里无法调用背景色前景色都不想显示 一下是书上的一段代码,编译错误,但是可 ...
- spring学习十三
1: RESTful URL : 域和端口 / servlet / 资源 / 参数id 2: 静态资源访问处理? 采用RESTful架构后,需要将web.xml中控制器拦截的请求设置为/,这样会将c ...
- mybatis---demo1--(n-n)----bai
实体类1: package com.etc.entity; import java.util.List; public class RoleInfo { private int rid; privat ...
- DLL 演示
编写DLL时的函数与一般的函数方法基本一样.但要对库中的函数进行必要的声明,以说明哪些函数是可以导出的,哪些函数是不可以导出的. 把DLL中的函数声明为导出函数的方法有两种: 一是使用关键字_decl ...
- CSS——position
position是指元素的定位方式,有:static.absolute.fixed.relative.inherit 5种. static 默认,布局排版方式按照HTML代码的顺序布局. absolu ...
- mysql如何开启远程连接(默认未开启,即使密码正确,仍然无法访问)
mysql如何开启远程连接 | 浏览:1846 | 更新:2015-03-11 20:19 1 2 3 4 5 6 分步阅读 百度经验:jingyan.baidu.com 大家在公司工作中,经常会遇到 ...
- docker 笔记(4) Dockerfile 常用的指令
下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档. FROM指定 base 镜像. MAINTAINER设置镜像的作者,可以是任意字符串. COPY将文件从 build ...
- Shell编程实战 1.1 监控思路架构介绍
监控思路,架构介绍 需求:使用shell定制各种个性化的告警工具,但需要统一化管理,规范化管理. 思路:指定一个脚本包,包含主程序,子程序,配置文件,邮件引擎,输出日志等. 主程序:作为脚本的入口,是 ...
- css水平垂直居中方法(一)
第五种方法: 首先设置一个div,设置其的width与height,为了方便观察,我定义了div的背景色为red,代码如下: <!doctype html> <html lang=& ...