关于UI自动化IOS元素定位方法说明
1. 元素属性介绍
下图是通过weditor定位的微博的“我的钱包”,各属性如下图:

className:元素类型,如:XCUIElementTypeButton
isEnabled:元素是否可点击,一般值为1或者0
isVisible:元素是否可见,一般值为1或者0
value: 一般不用
label:绝大多数情况下,与 name 作用一致
name:元素的文本内容,可用作 AccessibilityId定位方式
xpath: 元素的绝对路径,可用作Xpath定位方式
2. IOS的几种元素定位方法
ios_predicate(推荐优先使用,详细介绍见3.1)
accessibility_id(推荐使用,对应name属性)
class_name (不推荐使用,对应className属性)
xpath(推荐使用)
ios_uiautomation(目前没用过)
ios_class_chain(目前没用过,不介绍)
具体参考appium.webdriver.common.mobileby文件。文件内容:

3. 元素定位方法详解
3.1 IOS_PREDICATE
推荐优先使用。仅支持 iOS 10或以上,可支持元素的单个属性和多个属性定位。具体 iOSNsPredicate语法结构可查看官方文档。
使用方法:
# 一个属性定位‘我的钱包’
driver.find_element_by_ios_predicate("label == '我的钱包')
# 两个属性定位‘我的钱包’
driver.find_element_by_ios_predicate("label == '我的钱包' AND name == 'WBPageDiscoverSubGirdView')
上面两个例子用的都是完全匹配(==),还可以用不完全匹配(如:CONTAINS、LIKE)的语法结构,具体可参考https://testerhome.com/topics/9405
3.2 ACCESSIBILITY_ID
推荐使用。替代以前的name定位方式。
在 Android 上,主要使用元素的content-desc属性,如该属性为空,不能使用此定位方式。
在 iOS 上,主要使用元素的label或name(两个属性的值都一样)属性进行定位,如该属性为空,也是不能使用该属性。
使用方法:
# 等同于by_name
driver.find_element_by_accessibility_id('WBPageDiscoverSubGirdView')
3.3 class_name
不推荐使用。支持:Android 和 iOS。需要特别注意该属性的唯一性!
class_name唯一的情况并不多,一般情况下用不上。
# 不推荐使用
driver.find_element_by_class_name('XCUIElementTypeButton')
3.4 xpath
推荐使用。支持:Android 和 iOS。但由于 iOS 10开始使用的 XCUITest 框架原生不支持,定位速度很慢。
使用绝对路径定位
MobileBy.xpath("className/className/className/className")
使用相对路径定位
MobileBy.xpath("//className")
通过元素的索引定位
MobileBy.xpath("//className[index]")
通过元素的属性定位
一种属性:MobileBy.xpath("//className[@label='更多信息']")
两种属性:MobileBy.xpath("//className[@label='更多信息'][@isVisible='1']")
部分属性(最强大):MobileBy.xpath("//className[contains(@label,'更多')]")
3.5 ios_uiautomation
仅支持 iOS 9.3或以下,是 iOS 旧框架 UIAutomation 的定位方式,现在基本上很少使用,这个定位类型同样可使用 iOS 谓词进行定位
关于UI自动化IOS元素定位方法说明的更多相关文章
- python ui自动化之元素定位和常用操作
做ui自动化的最基础的就是页面元素定位了,如果连页面元素都定位不到,自动化从何谈起呢?接下来我们就看看页面元素定位的方法吧!(这里就用百度页面来进行演示) 一.最通用的几种定位方式: 1.通过id定位 ...
- UI自动化之元素定位(xpath、css)
很早之前就已经写过自动化了,不过点着功能久了就会容易忘记元素定位,尤其是xpath和css定位,所以就花点时间做下总结收集. xpath有两种定位: 一.绝对路径(不推荐使用,除非已经使用了所有方式仍 ...
- (appium+python)UI自动化_03_元素定位工具
前言 在UI自动化过程中,需要对手机app上的元素进行定位,然后进一步编写自动化脚本操作app.定位元素首先需要定位工具来辅助查看页面元素.小编常用的定位工具有2种,分别是uiautomatorvie ...
- selenium自动化之元素定位方法
在使用selenium webdriver进行元素定位时,有8种基本元素定位方法(注意:并非只有8种,总共来说,有16种). 分别介绍如下: 1.name定位 (注意:必须确保name属性值在当前ht ...
- 关于UI自动化中元素定位常用方法的个人总结
1.如果目标元素有id属性,优先使用id定位: 2.元素locator尽可能保证简洁,考虑locator中路径的变化频率,尽量减少后期更新和维护成本: 3.使用xpath时,不要一味的使用‘/’逐层进 ...
- 基于appium的常用元素定位方法
一.元素定位工具 app应用的元素使用的是控件定位,不同于web网页,web网页定位元素通常使用的是F12工具,那么在app当中我们则要借助其它的工具来辅助定位. 1.uiautomatorviewe ...
- selenium+python自动化之元素定位
自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. ...
- Python3+Selenium2完整的自动化测试实现之旅(三):Selenium-webdriver提供的元素定位方法
本篇以实例介绍selenium下的webdriver模块提供的定位页面元素(也可以称为对象)的方法和使用技巧,在此注意:在做WEB自动化测试前,需要对前端相关的技术有所了解,如HTML.XML.Xpa ...
- Appium学习笔记4_元素定位方法
Appium之元素定位,如果对Android上如何使用工具获取页面元素有问题的,请转战到这:http://www.cnblogs.com/taoSir/p/4816382.html. 下面主要是针对自 ...
随机推荐
- Java 线程学习笔记
1.什么是线程 进程: 一个正在运行的程序就叫一个进程. 每个进程都有独立的内存空间. (进程是资源分派的基本单位) 线程: 一个进程中可以有很多线程.----> 常说的多线程 线程没有独立的内 ...
- C++ 构造函数、析构函数与虚函数的关系
编译环境:windows 10 + VS2105 1.构造函数不能为虚函数 虚函数的作用是为了实现C++多态机制.基类定义虚函数,子类可以重写该虚函数.当子类重写父类虚函数后,父类指针指向子类地址时, ...
- MySQL8.0.28安装教程全程参考MySQL官方文档
前言 为了MySQL8.0.28安装教程我竟然在MySQL官方文档逛了一天,至此献给想入门MySQL8.0的初学者.以目前最新版本的MySQL8.0.28为示例进行安装与初步使用的详细讲解,面向初学者 ...
- Visual Studio 2022 下载链接及激活密钥
Visual Studio 2022 下载链接:https://visualstudio.microsoft.com/zh-hans/vs/ 激活码: 专业版: TD244-P4NB7-YQ6XK-Y ...
- AtCoder Beginner Contest 238 A - F 题解
AtCoder Beginner Contest 238 \(A - F\) 题解 A - Exponential or Quadratic 题意 判断 \(2^n > n^2\)是否成立? S ...
- LeetCode.241
241. 为运算表达式设计优先级 题目大意 给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果.你需要给出所有可能的组合的结果.有效的运算符号包含 + - * 思路: ...
- ApacheCN 捐赠名单 2019
这是 ApacheCN 的捐赠名单,不是龙哥盟博客的(关于 ApacheCN). 最新的名单请见 https://home.apachecn.org/donate/. 捐赠者 金额(元) 时间 收入类 ...
- 看一遍就懂:MVCC原理详解
MVCC实现原理也是一道非常高频的面试题,自己在整理这篇文章的时候,感觉到网上的资料在讲这块知识点上写的五花八门,好像大家的理解并没有一致. 这里将自己所理解的做一个总结,个人会觉得这是一篇含金量挺高 ...
- golang 获取当月最后一天日期
now := time.Now() year, month, day := now.Date() //fmt.Println(year, month, day) //2021 September 1 ...
- (全局npmrc)nrm、npmrc、package-lock.json 的优先级
npmrc 测试 nrm.npmrc 的优先级 实验 1. 没有设置 nrm. 默认设置 registry 为 https://registry.npmjs.org/ 下载的所有包都是通过以上域名获取 ...