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刷题之#720-词典中最长的单词(Longest Word in Dictionary)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4120 访问. 给出一个字符串数组words组成的一本英语词典.从 ...
- MongoDB学习2:MongoDB的基本操作
以下都是基于MongoShell进行操作 1.使用insert进行插入操作 示例: db.<集合>.insertOne(<JSON对象>) db.<集合>.ins ...
- Vulnhub篇Photographerr
0x00 靶机信息 靶机:Photographerr:1 难度:中 下载:https://www.vulnhub.com/entry/photographer-1,519/ 0x01 信息收集 靶场网 ...
- Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.catherine.forrealm.about_utils.RealmHelper.findAllStudent()' on a null object reference
报错: 解决方法: private RealmHelper realm_search = new RealmHelper(); 进而发现在写RecyclerView时,遗漏如下代码: recy_sea ...
- C++开发时字符编码的选择
最近看了很多有关字符编码的讨论帖子, 自己也做了很多尝试, 针对linux和windows上字符编码的选择做了个简单整理, 在此做个记录 首先是基础编码知识, 下面我列出的4个编码方式或字符集是我们应 ...
- autotools使用
autotools制作makefile 下面以hello.c来说明生成makefile的过程. 基本步骤如下: 1)autoscan命令生成configure.scan文件,重命名configure. ...
- psutil 简单使用!
psutil.cpu_percent() cpu 百分比 mem = psutil.virtual_memory()mem.total,mem.used mem.free psutil.cpu_cou ...
- ceph 快照,克隆
转载 https://my.oschina.net/wangzilong/blog/1595081 ceph 快照,克隆 ceph是一个非常好的后端存储系统.其中包括最常用的块存储,对象存储,文件系统 ...
- jQuery捕获-获取DOM元素内容和属性
一.获取内容 1.text()-设置或返回所选元素的文本内容 2.html()-设置或返回所选元素的内容(包括HTML标记) 3.val()-设置或 返回表单字段的值 $(document).read ...
- Unable to add window -- token null is not for an application错误的解决方法 android开发
Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not f ...