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定位方式和各个定位方式的速度排序. 据我观察,按查找元素的顺序速度,从快到 ...
随机推荐
- vue_如何判断变量是数组还是对象
一.typeof判断数据类型(判断数组跟对象都返回object) console.log(typeof null); // "object" console.log(typeof ...
- Broken 2020: 1 靶机
这个靶机的作者脑洞太大了 扫描下端口,就普通的ssh http服务 扫描下目录,发现了一个2个cms目录 进来cms发现是个安装界面,但是后面安装失败,无意返回cms发现出现了一个flag 进入/cm ...
- MySQL查看数据存放位置
show global variables like "%datadir%";
- [源码解析] 当 Java Stream 遇见 Flink
[源码解析] 当 Java Stream 遇见 Flink 目录 [源码解析] 当 Java Stream 遇见 Flink 0x00 摘要 0x01 领域 1.1 Flink 1.2 Java St ...
- git pull冲突的解决方案
处理步骤: 1.先将本地修改存储起来 $ git stash 这样本地的所有修改就都被暂时存储起来 .使用git stash list可以看到保存的信息: git stash暂存修改 其中stash@ ...
- int ,long , long long , __int64类型的范围
首先见测试代码(在g++/gcc下运行): #include<iostream> using namespace std; int main() { cout<<sizeof( ...
- Redis高级项目实战,都0202年了,还不会Redis?
导读 大家都听过1万小时定律,可事实真的是这样吗?做了1万小时的CRUD,不还只会CRUD吗,这年头不适当的更新自身下技术栈,出门和别人聊天吹牛的时候,都没拿不出手,(⊙o⊙)…Redis没入门的童鞋 ...
- python3 raw 数据转换为jpg
python3 raw 数据转换为jpg 我们大家都知道,sensor 直接出来的裸数据为raw 数据,没有经过编解码,压缩. 我们需要将raw数据转换为其他格式比如jpg,png,bmp 人眼才能看 ...
- 新网站seo如何优化
http://www.wocaoseo.com/thread-189-1-1.html 做seo优化也有一段时间了,有做过自己的博客,自己的论坛,也有做过公司企业的网站,有同时一个人完成8个 ...
- 力扣leetcode 435. 无重叠区间 - 贪心
非常经典的区间贪心思想 -- 详见博文: 贪心思想之区间贪心 本题给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠. 注意: 可以认为区间的终点总是大于它的起点. 区间 [1,2] ...