iOS APP自动化:class chain定位方法

iOS APP自动化:predicate定位中介绍了iOS APP的predicate定位方法,本文介绍与XPath语法比较类似的class chain定位方法。

class chain 定位

class chain 定位方法由mykola-mokhnach开发,和XPath比较类似,可以实现分层查询,但它的查询性能更高,通过将class chain查询映射到一系列的XCUITest调用中,仅查找子节点,不像XPath那样递归地查询整个UI树。

class chain 支持Predicate字符串匹配,下面介绍class chain 定位方法。

儿子节点搜索

选择儿子元素,类似于XPath语法中的反斜杠/

XCUIElementTypeWindow[`label BEGINSWITH "text"`][-1] # 选择label以foo开头的最后一个
XCUIElementTypeWindow/XCUIElementTypeButton[3] # 选择window的儿子元素XCUIElementTypeButton的第3个(索引从1开始)
XCUIElementTypeWindow/*[3]  # 选择window的第3个儿子元素
XCUIElementTypeWindow # 选择所有子窗口
XCUIElementTypeWindow[2] # 选择第二个窗口
XCUIElementTypeWindow[2]/XCUIElementTypeAny # 选择第二个子窗口的所有子元素

子孙节点搜索

类似于XPath语法中的双反斜杠//

**/XCUIElementTypeCell[`name BEGINSWITH "A"`][-1]/XCUIElementTypeButton[10] # 选择name以A开头的最后一个Cell元素的第10个子元素
**/XCUIElementTypeCell[`name BEGINSWITH "B"`] # 选择name以B开头的所有Cell元素
**/XCUIElementTypeCell[`name BEGINSWITH "C"`]/XCUIElementTypeButton[10] # 选择name以C开头的第一个Cell元素的第10个子元素
**/XCUIElementTypeCell[`name BEGINSWITH "D"`]/**/XCUIElementTypeButton # 选择name以D开头的第一个Cell元素下所有后代Button

使用class chain定位是需要注意以下几点:

  • Predicate字符串要写到中括号中,并且使用反引号包裹。
  • Predicate表达式应该写在索引前面

class chain定位示例

使用facebook-wda进行元素点击操作:

s = c.session('com.apple.Preferences') # 打开设置

s(classChain='XCUIElementTypeWindow/**/XCUIElementTypeCell[`label BEGINSWITH "屏幕"`]').click() # 点击【屏幕使用时间】
s(classChain='**/XCUIElementTypeCell[`label BEGINSWITH "屏幕"`]').click()
s(classChain='**/XCUIElementTypeTable/*[`name == "通知"`]').click() # 点击【通知】
s(classChain='**/XCUIElementTypeCell[7]').click() # 点击【通知】

上面的定位语句也可以使用XPath语法,对应如下:

s(xpath='//XCUIElementTypeWindow//XCUIElementTypeCell[starts-with(@label,"屏幕")]').click()
s(xpath='//XCUIElementTypeCell[starts-with(@label,"屏幕")]').click()
s(xpath='//XCUIElementTypeTable/*[@name="通知"]').click()
s(xpath='//XCUIElementTypeCell[7]').click()

XPath定位效率比class chain低,建议使用class chain来进行定位。

参考文档:

  1. https://github.com/facebookarchive/WebDriverAgent/wiki/Class-Chain-Queries-Construction-Rules

  2. https://github.com/appium/appium-xcuitest-driver/pull/391

--THE END--

系列文章

1、Appium 介绍及环境安装
2、selenium/appium 等待方式介绍
3、App控件定位:Android 控件介绍及元素定位方法
4、Appium元素定位(一)
5、Appium元素定位(二):UiAutomator定位
6、Appium控件交互
7、Android WebView测试
8、AppCrawler自动遍历测试
9、自动遍历测试之Monkey工具
10、App自动化测试工具Uiautomator2
11、App自动化测试工具Airtest
12、Android手机管理平台搭建:STF和atxserver2
13、Windows上实现iOS APP自动化测试:tidevice + WDA + facebook-wda / appium
14、iOS APP自动化:predicate定位
15、iOS APP自动化:class chain定位方法
16、使用facebook-wda进行iOS APP自动化测试


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值