iOS 定位方式 iOSNsPredicateString 详解
2017-10-24 09:46
603 查看
前言
由于使用id、
className、
AccessibilityId定位方式较为简单,多数情况下,在同一个页面,都不是唯一存在的,不能识别一个元素。而
xpath定位方式在
xcui 底层原生不支持,由 appium 额外支持的,定位速度很慢,而且有时候定位不到元素的情况存在。综上所述,在 iOS 的 UI 自动化中,使用原生支持的
iOSNsPredicateString定位方式是最好,支持也是最好的。
定位方式
iOS 版本全支持,底层测试框架无论是 XCUITest 或 UIAutomation,可支持元素的单个属性和多个属性定位,推荐使用。一个元素有这些属性:type、
value、
name、
label、
enabled、
visible,有些元素的属性只有以上的部分属性,如下图所示,可根据这些属性进行元素定位。
![](https://testerhome.com/uploads/photo/2017/04b01d9c-45da-46e3-9182-d4f87aa637f8.jpg!large)
元素属性的介绍
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
原文链接:https://testerhome.com/topics/9405
相关文章推荐
- Appium - iOS 定位方式 iOSNsPredicate 详解
- iOS 定位方式 iOSNsPredicateString 详解
- iOS 定位服务编程详解
- GPS、Wifi等各种手机定位方式的含义及原理详解
- iOS定位服务的应用 详解
- python+selenium自动化测试之路Day6之selenium webdriver8种定位方式详解
- iOS定位服务编程详解
- Java selenium - 父子、兄弟、相邻节点定位方式详解
- iOS 中的编码方式详解(主要讲解Unicode)
- iOS下载方式详解
- IOS 代理方式实现实例详解
- 详解iOS视频播放方式
- Python selenium 父子、兄弟、相邻节点定位方式详解
- 实现 iOS 后台定位的两种方式
- iOS绘图详解-多种绘图方式、裁剪、滤镜、移动、CTM
- 详解iOS获取通讯录的4种方式
- iOS利用Block逆向传值的方式详解
- 详解iOS中按钮点击事件处理方式
- GPS、Wifi等各种手机定位方式的含义及原理详解
- IOS定位服务的应用 详解