Appium针对IOS的几种元素定位方法

一时失言乱红尘 2021-09-25 06:36 804阅读 0赞

文章目录

    1. 元素属性介绍
    1. IOS的几种元素定位方法
    1. 元素定位方法详解
    • 3.1 IOS_PREDICATE
    • 3.2 ACCESSIBILITY_ID
    • 3.3 class_name
    • 3.4 xpath
    • 3.5 ios_uiautomation

1. 元素属性介绍

下图是通过weditor定位的微博的“我的钱包”,各属性如下图:
在这里插入图片描述

  1. className:元素类型,如:XCUIElementTypeButton
  2. isEnabled:元素是否可点击,一般值为1或者0
  3. isVisible:元素是否可见,一般值为1或者0
  4. value: 一般不用
  5. label:绝大多数情况下,与 name 作用一致
  6. name:元素的文本内容,可用作 AccessibilityId定位方式
  7. 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语法结构可查看官方文档。
使用方法:

  1. # 一个属性定位‘我的钱包’
  2. driver.find_element_by_ios_predicate("label == '我的钱包')
  3. # 两个属性定位‘我的钱包’
  4. 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(两个属性的值都一样)属性进行定位,如该属性为空,也是不能使用该属性。
使用方法:

  1. # 等同于by_name
  2. driver.find_element_by_accessibility_id('WBPageDiscoverSubGirdView')

3.3 class_name

不推荐使用。支持:Android 和 iOS。需要特别注意该属性的唯一性!
class_name唯一的情况并不多,一般情况下用不上。

  1. # 不推荐使用
  2. 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 谓词进行定位

发表评论

表情:
评论列表 (有 0 条评论,804人围观)

还没有评论,来说两句吧...

相关阅读

    相关 appium元素定位(12)

    自动化测试来说,核心技能就是对象的定位。不管是 web 页面上的一个 按钮或输入框,还是移动 app 上的一个按钮或输框,我们要想对其进行点击或输入操作,前提是要先找到这