文章目录1. 元素属性介绍2. IOS的几种元素定位方法3. 元素定位方法详解3.1 IOS_PREDICATE3.2 ACCESSIBILITY_ID3.3 class_name3.4 xpath3.5 ios_uiautomation1. 元素属性介绍下图是通过weditor定位的微博的“我的钱...
文章目录
- 1. 元素属性介绍
- 2. IOS的几种元素定位方法
- 3. 元素定位方法详解
- 3.1 IOS_PREDICATE
- 3.2 ACCESSIBILITY_ID
- 3.3 class_name
- 3.4 xpath
- 3.5 ios_uiautomation
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 谓词进行定位
本文标题为:Appium针对IOS的几种元素定位方法
基础教程推荐
- Android实现短信验证码输入框 2023-04-29
- IOS获取系统相册中照片的示例代码 2023-01-03
- MVVMLight项目Model View结构及全局视图模型注入器 2023-05-07
- Android开发Compose集成高德地图实例 2023-06-15
- Android Compose自定义TextField实现自定义的输入框 2023-05-13
- iOS开发 全机型适配解决方法 2023-01-14
- iOS Crash常规跟踪方法及Bugly集成运用详细介绍 2023-01-18
- iOS开发使用XML解析网络数据 2022-11-12
- Flutter进阶之实现动画效果(三) 2022-10-28
- iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi 2023-06-18