Appium之定位元素
常用的appium元素定位工具:
(1)Android SDK 中提供的元素定位工具uiautomatorviewer;
(2)AppiumDesktop提供的元素定位工具Appium Inspector ;
(3)自动化框架UIAutomator2提供的元素定位工具weditor;
常用元素定位方法:
1、通过resourceId定位

driver.find_element_by_id("more-icon")
2、通过text的文本属性定位

driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("食品")').click()
3、通过xpath定位

driver.find_element_by_xpath('//android.widget.ListView/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]').click()
而对于text属性为文本的元素,也可以用xpath定位:

driver.find_element_by_xpath("//*[@text='图书']").click()
4、通过accessibility_id定位
accessibility_id定位就是通过UI Automator(即Android_SDK自带的uiautomatorviewer)工具查看的content-desc属性
driver.find_element_by_xpath("//*[@resource-id="com.taobao.taobao:id/rv_main_contai")
使用uiautomator方法定位
即driver.find_element_by_android_uiautomator('new UiSelector().xxx("xxx")')方法。
(1)text属性
driver.find_element_by_android_uiautomator('new UiSelector().text("食品")').click()
driver.find_element_by_android_uiautomator('new UiSelector().text("text文本")').click()
driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("以xxx开头的文本")').click()
driver.find_element_by_android_uiautomator('new UiSelector().textContains("包含xxx文本")').click()
driver.find_element_by_android_uiautomator('new UiSelector().textMatches("正则表达式")')
(2)resourceId属性
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.baidu.yuedu:id/webbooktitle")').click()
(3)className属性
页面上的class属性一般不唯一,可先用复数定位,再用下标(索引)具体定位。
driver.find_elements_by_android_uiautomator('new UiSelector().className("android.widget.TextView")')[1].click()
(4)description属性
driver.find_element_by_android_uiautomator('new UiSelector().description("contenet-des属性")').click()
组合定位元素
(1)resourceId+text 或 className+text

# className+text组合定位
class_text = 'className("android.widget.TextView").text("150")'
driver.find_element_by_android_uiautomator(class_text).click() # resourceId+text组合定位
id_text = 'resourceId("com.fenbi.android.solar:id/couponValue").text("150")'
driver.find_element_by_android_uiautomator(id_text).click()
父子定位childSelector

# 父子定位childSelector
son_ele = 'className("android.widget.LinearLayout").childSelector(text("数学"))'
driver.find_element_by_android_uiautomator(son_ele).click()
兄弟定位fromParent

# 兄弟定位fromParent
bro_ele = 'resourceId("com.fenbi.android.solar:id/tutor_tab").fromParent(text("发现"))'
driver.find_element_by_android_uiautomator(bro_ele).click()
参考:https://www.cnblogs.com/yoyoketang/p/7833554.html
Appium之定位元素的更多相关文章
- appium关于定位元素
Windows上定位元素我用的是uiautomatorviewer 这个工具在你的SDK-tools目录下,点击uiautomatorviewer.bat启动,注意appium在跑的时候是取不到的 工 ...
- Appium Android定位元素与操作
文章写得很好,转载备用 一.常用识别元素的工具 uiautomator:Android SDK自带的一个工具,在tools目录下 monitor:Android SDK自带的一个工具,在tools目录 ...
- Appium Inspector定位元素与录制简单脚本
本次以微信为例, 使用Appium自带的Inspector定位工具定位元素, 以及进行最最最简单脚本的录制: capabilities = { "platformName": &q ...
- appium -- Xpath定位元素
如文章<Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.其中一种就是根据控件所在页面的XPATH来定位控件. 本文就是尝试通过 ...
- python+appium-desktop:安卓(android)7.0以上使用appium无法定位元素(无法refresh)且 无法运行脚本
--解决方法: 启动appium时配置中添加: "automationName":"uiautomator2" --扩展: 想支持安卓7.0及以上版本需要满足一 ...
- Appium学习路—Android定位元素与操作
一.常用识别元素的工具 uiautomator:Android SDK自带的一个工具,在tools目录下 monitor:Android SDK自带的一个工具,在tools目录下 Appium Ins ...
- appium 使用findElementByAndroidUIAutomator 定位元素示例
appium 使用findElementByAndroidUIAutomator 定位元素示例 import io.appium.java_client.remote.MobileCapability ...
- 【转】Appium如何定位安卓APP元素
转载原文:https://www.jianshu.com/p/efe9dcf8bbaf 一.定位工具 在安装appium环境的时候我们已经安装了SDK,里面就自带有元素定位的工具,位置在.../sdk ...
- Appium+Python3+iOS定位元素
前言: 最近在做IOS自动化测试,IOS的Appium环境都配置OK,执行起来真的慢,慢到怀疑人生,那么今天就来总结一下IOS定位方式和各个定位方式的速度排序. 据我观察,按查找元素的顺序速度,从快到 ...
随机推荐
- C#LeetCode刷题之#83-删除排序链表中的重复元素(Remove Duplicates from Sorted List)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3820 访问. 给定一个排序链表,删除所有重复的元素,使得每个元素 ...
- 使用 .NET Core 3.x 构建 RESTFUL Api (续)
关于Entity Model vs 面向外部的Model Entity Framework Core 使用 Entity Model 用来表示数据库里面的记录. 面向外部的Model 则表示要传输的东 ...
- [C/C++]快速读入代码(快读)
快读 1.为什么要有快读 好吧,有些题目看上去十分简单,例如https://www.luogu.com.cn/problem/P4305这道题,实际上数据量巨多,光是一个测试点就可能有几个MB,在这种 ...
- 微信支付.NET SDK 中的BUG(存疑)
BUG出现在类文件WxPayData.cs中的FromXml(string xml)方法 /** * @将xml转为WxPayData对象并返回对象内部的数据 * @param string 待转换的 ...
- Typora markdown代码块显示序号
打开偏好设置,找到代码块 打开显示行号 然后关闭Typora重新打开 此时代码块就有行号了
- 实验室外的攻防战 UOJ#180 [树状数组]
实验室外的攻防战 UOJ#180 [树状数组] 题目 时针指向午夜十二点,约定的日子--2月28日终于到来了.随着一声枪响,伏特跳蚤国王率领着他的跳蚤大军们包围了 \(picks\) 博士所在的实验室 ...
- 笔记:html基础
一.HTML:超文本标记语言,是一种标签语言,不是编程语言,显示数据有双标签<body></body> 和单标签<img src=# / >, 标签大小写都可以 通 ...
- 个人项目WC.exe Node.js+electron实现
前言 实现语言:Javascript 编译工具:webstorm GitHub:https://github.com/NPjuan/WC.git 项目要求 wc.exe 是一个常见的工具,它能统计文本 ...
- 给你项目加个Mock吧
mockjs官网:http://mockjs.com/ 一.简介 1.什么是mock 拦截请求,生成随机数据. 2.mock的使用场景 当后端接口还未完成的时候,前端需要一些数据来写页面,此时就需要M ...
- HTTP基础 --响应
响应,由服务端返回给客户端,分为三部分:响应状态码(Response Status Code),响应头(Response Headers)和响应体(Response Body). 响应状态码 响应服务 ...