iOS 定位方式 iOSNsPredicateString 详解
原文地址https://segmentfault.com/a/1190000010205649
前言
由于使用id
、className
、AccessibilityId
定位方式较为简单,多数情况下,在同一个页面,都不是唯一存在的,不能识别一个元素。而 xpath
定位方式在 xcui 底层原生不支持,由 appium 额外支持的,定位速度很慢,而且有时候定位不到元素的情况存在。综上所述,在 iOS 的 UI 自动化中,使用原生支持的iOSNsPredicateString
定位方式是最好,支持也是最好的。
定位方式
仅支持 iOS 10或以上(底层需要使用 XCUITest 框架),可支持元素的单个属性和多个属性定位,推荐使用。一个元素有这些属性:type
、value
、name
、label
、enabled
、visible
,有些元素的属性只有以上的部分属性,如下图所示,可根据这些属性进行元素定位。
元素属性的介绍
type
:元素类型,与className
作用一致,如:XCUIElementTypeStaticText
value
: 一般不用name
:元素的文本内容,可用作 AccessibilityId
定位方式,如:测试420班级群
label
:绝大多数情况下,与 name 作用一致enabled
:元素是否可点击,一般值为true
或者false
visible
:元素是够可见,一般值为true
或者false
定位方式
元素的定位方式都是一个属性+运算符+值
形式存在
比较运算符:
>,<,==,>=,<=,!=
可用于数值和字符串的比较,
如:name>100
或name == '测试'
范围运算符:
IN
,BETWEEN
可用于数值和字符串的范围核对
如:name BETWEEN {3,10}
,name IN {'Alan','May'}
字符串相关:
CONTAINS
、BEGINSWITH
、ENDSWITH
包含某个字符串,如:label CONTAINS '测试'
以某个字符串开头,如:label BEGINSWITH '420'
以某个字符串结束,如:label ENDSWITH '班级群'
PS:在三个关键字后加上[c]
不区分大小写,可用于字母的校验;[d]
不区分发音符号,即没有重音符号($、#、%等);[cd]
即不区分大小写,也不区分发音符号,如:name CONTAINS[c] ABcd
和name CONTAINS abcd
、name CONTAINS ABCD
是等同的,注意后面两个没带[c]
的不相等通配符:
LIKE
通配符也接受[cd]
,?
代表一个字符,*
代表多个字符
如:一个元素的label
属性为label LIKE '420测试班级群'
label LIKE '420测?班级群'
label LIKE '420??班级群'
label LIKE '42?测试班?群'
label LIKE '*试班级群'
label LIKE '420测试班*'
label LIKE '42*级群'
label LIKE '4*试*群'以上这么多种文本都可以被识别为同一个元素。
正则表达式:
MATCHES
如:以4
开头,以群
结束,label MATCHES '^4.+群$'
PS:具体正则表达式语法,请百度一下,你就知道
以一种属性定位元素
可以用元素的属性:type
、value
、name
、label
、enabled
、visible
,进行定位:
type == XCUIElementTypeStaticText,
label CONTAINS '测试'
label LIKE '*试班级群'
enabled == true
visible == false
以两种或两种以上属性定位元素
就是以上单个属性定位用符号AND
连接起来即可。如:
type == XCUIElementTypeStaticText AND label CONTAINS '测试
type == XCUIElementTypeStaticText AND label CONTAINS '测试' AND enabled == true
iOS 定位方式 iOSNsPredicateString 详解的更多相关文章
- iOS定位服务编程详解
现在的移动设备很多都提供定位服务,使用iOS系统的iPhone.iPod Touch和iPad都可以提供位置服务,iOS设备能提供3种不同途径进行定位:Wifi, 蜂窝式移动电话基站, GPS卫星 i ...
- IOS—UITextFiled控件详解
IOS—UITextFiled控件详解 //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGR ...
- iOS原生地图开发详解
在上一篇博客中:http://my.oschina.net/u/2340880/blog/414760.对iOS中的定位服务进行了详细的介绍与参数说明,在开发中,地位服务往往与地图框架结合使用,这篇博 ...
- ios新特征 ARC详解
IOS ARC 分类: IOS ARC2013-01-17 09:16 2069人阅读 评论(0) 收藏 举报 目录(?)[+] 关闭工程的ARC(Automatic Reference Co ...
- iOS 单元测试之XCTest详解(一)
iOS 单元测试之XCTest详解(一) http://blog.csdn.net/hello_hwc/article/details/46671053 原创blog,转载请注明出处 blog.csd ...
- iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigati ...
- [转]iOS学习之UINavigationController详解与使用(三)ToolBar
转载地址:http://blog.csdn.net/totogo2010/article/details/7682641 iOS学习之UINavigationController详解与使用(二)页面切 ...
- IOS 友盟使用详解
IOS 友盟使用详解 这篇博客将会详细介绍友盟的使用,希望对博友们有所帮助. 首先我们在浏览器上搜索友盟. 在这里我们选择官网这个,进去友盟官网后我们按照下图进行选择. 接下来选择如下图 Next 这 ...
- [转]iOS学习之UINavigationController详解与使用(二)页面切换和segmentedController
转载地址:http://blog.csdn.net/totogo2010/article/details/7682433 iOS学习之UINavigationController详解与使用(一)添加U ...
随机推荐
- 【转】【Linux】Linux 下zip包的压缩与解压
linux zip 命令详解 功能说明:压缩文件. 语 法:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串& ...
- 【BZOJ】1044: [HAOI2008]木棍分割(二分+dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1044 如果只求最大的最小,,直接二分就行了...可是要求方案.. 好神! 我竟然想不到! 因为我们得 ...
- RAID的简单说明
RAID,为 Redundant Arrays of Independent Disks 的简称,中文为廉价※冗余磁盘阵列 . 磁盘阵列 其实也分为软阵列 (Software Raid) 和硬阵列 ( ...
- php如何判断两个时间的时间差
$time1=2011-11-11 11:11:11$time2=2016-12-10 16:58:13 代码: if(abs(strtotime($time2)-strtotime($time1)) ...
- <mvc:annotation-driven />注解详解
<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式,简写形式可以让初学都快速应用默认配置方案.<mvc:annotation-dri ...
- mysql远程连接授权
Mysql:is not allowed to connect to this MySQL server 如果你想连接你的mysql的时候发生这个错误: ERROR 1130: Host '192.1 ...
- 怎么隐藏MathType标尺
因为MathType公式编辑能力非常的好用,所以非常的受大家的欢迎.MathType用现有的模板可以直接输入输出各种公式,而且MathType中有着各式各样的数学符号满足了大家日常公式的需求,为大家的 ...
- iOS开发之--一些有用的博文和博客
应用内购的详细教程: http://mp.weixin.qq.com/s?__biz=MzA3NzM0NzkxMQ==&mid=2655357883&idx=2&sn=7cda ...
- ionic ui 框架
直接看着这写就行了 http://ionicframework.com/docs/components/
- Oracle自定义聚集函数
今天工作中看见别人写的自定义聚集函数,所以一门心思的想搞懂,就在网上找资料了. 自定义聚集函数 自定义聚集函数接口简介 Oracle提供了很多预定义好的聚集函数,比如Max(), Sum(), AVG ...