• IOS自动化定位方式


    原文地址http://blog.csdn.net/wuyepiaoxue789/article/details/77885136

    元素属性的介绍

    type:元素类型,与className作用一致,如:XCUIElementTypeStaticText
    value: 一般不用
    name:元素的文本内容,可用作 AccessibilityId定位方式,如:测试420班级群
    label:绝大多数情况下,与 name 作用一致
    enabled:元素是否可点击,一般值为true或者false
    visible:元素是够可见,一般值为true或者false

    1.findElementByIosNsPredicate

    这个定位方式需要用java-client -5.0.版本,4.x的版本没有这个定位方式

    .findElementByIosNsPredicate

    .findElementByIosNsPredicate

    .findElementByIosNsPredicate

    .findElementByIosNsPredicate

    .findElement

    仅支持 iOS 10或以上,可支持元素的单个属性和多个属性定位,推荐使用。
    一种属性:MobileBy.iOSNsPredicateString("type == 'XCUIElementTypeButton'")
    两种属性:MobileBy.iOSNsPredicateString("type == 'XCUIElementTypeButton' AND label == '更多信息'")
    具体 iOSNsPredicate语法结构可查看官方文档,或查看的这个帖子:iOS 定位方式 iOSNsPredicateString 详解

     

    Appium 的定位方式种类

    我说的定位方式都是基于我自己亲测过,没使用或比较少用的就在这里不列举了,如有错误的地方,请多多包涵!常用的定位方式(仅限 Android 和 iOS 两种系统)有 className、id、xpath、AccessibilityId、AndroidUIAutomator、iOSNsPredicateString、iOSClassChain、IosUIAutomation等

    className

    使用元素的className属性定位,支持:Android 和 iOS,推荐使用。
    MobileBy.className("XCUIElementTypeButton")

    id

    使用元素的Resource Id属性定位,支持:Android,仅支持 Android 4.3或以上,推荐使用。反正我没有在 iOS 用过,大家有正确使用过的例子,可以分享一下。
    MobileBy.id("package.name:id/android")

    xpath

    支持:Android 和 iOS。但由于 iOS 10开始使用的 XCUITest 框架原声不支持,定位速度很慢,所以官方现在不推荐大家使用,也有其他替代的定位方式可使用。
    1.使用绝对路径定位,如截图所显示的 xpath 路径
    MobileBy.xpath("className/className/className/className")
    2.使用相对路径定位
    MobileBy.xpath("//className")
    3.通过元素的索引定位
    MobileBy.xpath("//className[index]")
    4.通过元素的属性定位
    一种属性:MobileBy.xpath("//className[@label='更多信息']")
    两种属性:MobileBy.xpath("//className[@label='更多信息'][@isVisible='1']")
    部分属性(最强大):MobileBy.xpath("//className[contains(@label,'更多')]")

    AccessibilityId

    替代以前的name定位方式,推荐使用。
    在 Android 上,主要使用元素的content-desc属性,如该属性为空,不能使用此定位方式。
    在 iOS 上,主要使用元素的labelname(两个属性的值都一样)属性进行定位,如该属性为空,如该属性为空,也是不能使用该属性。
    MobileBy.AccessibilityId("更多信息")

    AndroidUIAutomator

    仅支持 Android 4.2或以上,可支持元素的单个属性和多个属性定位,推荐使用。
    一种属性:MobileBy.AndroidUIAutomator("new UiSelector().text("发送")")
    两种属性:MobileBy.AndroidUIAutomator("new UiSelector().text("发送").clickable(true)")
    元素的所有属性都可用做定位,功能非常强大,且速度很快。

    iOSNsPredicateString

    仅支持 iOS 10或以上,可支持元素的单个属性和多个属性定位,推荐使用。
    一种属性:MobileBy.iOSNsPredicateString("type == 'XCUIElementTypeButton'")
    两种属性:MobileBy.iOSNsPredicateString("type == 'XCUIElementTypeButton' AND label == '更多信息'")
    具体 iOSNsPredicate语法结构可查看官方文档,或查看的这个帖子:iOS 定位方式 iOSNsPredicateString 详解

    iOSClassChain

    仅支持 iOS 10或以上,这是 github 的 Mykola Mokhnach 大神开发,仅限在 WebDriverAgent 框架使用,用于替代 xpath 的,但使用一阵子后,感觉灵活性没有 xpath 和 iOSNsPredicate 好,应该还不完善吧。具体使用方法,请见:https://github.com/appium/appium-xcuitest-driver/pull/391 。
    MobileBy.iOSClassChain('XCUIElementTypeWindow[1]/XCUIElementTypeOther[1]/XCUIElementTypeOther[1]/XCUIElementTypeNavigationBar[1]/XCUIElementTypeOther[1]/XCUIElementTypeButton[2]')

    IosUIAutomation

    仅支持 iOS 9.3或以下,是 iOS 旧框架 UIAutomation 的定位方式,现在基本上很少使用,这个定位类型同样可使用 iOS 谓词进行定位,详细可参考:iOSNsPredicate

    总结:
    以上这个多定位方式,很少说全部用完。根据我的经验,推荐使用:Android:AndroidUIAutomator > className = id = AccessibilityId > xpath。iOS:iOSNsPredicateString > className = AccessibilityId

  • 相关阅读:
    spring security 学习资料
    设计模式,学习资料
    知名博主
    shiro 学习资料
    nuxt 中使用 koa-session
    koa-session 知识点
    MySQL 中的默认数据库介绍
    JUnit 学习资料
    027_git添加多账号设置
    023_supervisorctl管理服务注意事项
  • 原文地址:https://www.cnblogs.com/111testing/p/8326203.html
Copyright © 2020-2023  润新知