• Appium定位方式总结


    通过appium-desktop定位元素

    ClassName

    Android

    Android的class属性对应ClassName定位方式,ClassName一般都是会重复的,可以通过index来获取需要的元素。(从0开始查找dom树中的同名class属性)

    iOS

    iOS的type属性对应CLassName定位方式,ClassName一般都是会重复的,可以通过index来获取需要的元素。(从0开始查找dom树中的同名class属性)

     

    ID

    Android

    Android的resource-id对应ID定位方式,这个id也可能存在重复情况,可以通过index来获取需要的元素。(从0开始查找dom树中的同名resource-id属性)

    使用appium-desktop来获取元素时,如果提示有id的定位方式,则可以只接获取,代表唯一。

     

    XPATH

    Android

    Android的Xpath定位与PC的XPATH定位大同小异,可以通过相对路径的定位方式定位,区别在于,这里相对路径定位的//后只可以接Android的class属性或*。(//android.widget.Button[@text="登 录"])

    iOS

    iOS10 以上使用XCUITest框架后,原生框架不支持XPATH,Appium进行了转换,速度很慢不建议使用。

     

    AccessibilityId

    Android

    Android的content-desc属性对应AccessibilityId定位方式,这个content-desc属性专门为残障人士设置,如果这个属性不为空则推荐使用。

    iOS

    iOS的label和name属性都对应AccessibilityId定位方式,如果有则推荐使用。

     

    AndroidUIAutomator

    Android的源生测试框架的定位方式,定位速度快。推荐使用牢记常用的几种。

    打开方法:

    # 这个在运行时,调用的是Android自带的UI框架UiAutomator的Api
    # 介绍几个简单常用的,text、className、resource-id
    # text
    # 匹配全部text文字
    driver.find_element_by_android_uiautomator('new UiSelector().text("手机号")')
    # 包含text文字
    driver.find_element_by_android_uiautomator('new UiSelector().textContains("机")')
    # 以text什么开始
    driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("手")')
    # 正则匹配text
    driver.find_element_by_android_uiautomator('new UiSelector().textMatches("^手.*")')
     
    # className
    driver.find_elements_by_android_uiautomator('new UiSelector().className("android.widget.TextView")')
    # classNameMatches
    driver.find_elements_by_android_uiautomator('new UiSelector().classNameMatches("^android.widget.*")')
     
    # resource-id、resourceIdMatches    类似我们html id 这个可能重复,
     driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.syqy.wecash:id/et_content")') # description driver.find_element_by_android_uiautomator('new UiSelector().description("S 日历")') # descriptionStartsWith driver.find_element_by_android_uiautomator('new UiSelector().descriptionStartsWith("日历")') # descriptionMatches driver.find_element_by_android_uiautomator('new UiSelector().descriptionMatches(".*历$")'

    iOSPredicateString

    仅支持iOS10以上,可以多个属性同时定位,推荐。(替代XPATH)

    driver.find_elements_by_ios_predicate("label == '登录'")
     
    driver.find_elements_by_ios_predicate("type='XCUIElementTypeOther' and name='联系人,标签, 第2个按钮,共3个'")

    iOSUIAutomation

    iOS9.3以下使用,现在已经废弃,iOSPredicateString代替了iOSUIAutomation

  • 相关阅读:
    [AngularJS] angular-schema-form -- 1
    [MODx] 10. Using Babel for Muti-languages support
    [AngularJS] Using AngularJS interceptors with $http
    [AngularJS] Best Practise
    [Node.js] Creating Demo APIs with json-server
    [HTML5] Input accepts only 6 number characters
    [Heroku] How to pull, push changes
    Runoob-Java-Maven:Maven 引入外部依赖
    Runoob-Java-Maven:Maven 构建 & 项目测试
    Runoob-Java-Maven:Maven 构建 Java 项目
  • 原文地址:https://www.cnblogs.com/feng0815/p/8481679.html
Copyright © 2020-2023  润新知