zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Leetcode Plus One
    Leetcode Swap Nodes in Pairs
    Leetcode Remove Nth Node From End of List
    leetcode Remove Duplicates from Sorted Array
    leetcode Remove Element
    leetcode Container With Most Water
    leetcode String to Integer (atoi)
    leetcode Palindrome Number
    leetcode Roman to Integer
    leetcode ZigZag Conversion
  • 原文地址:https://www.cnblogs.com/feng0815/p/8481679.html
Copyright © 2011-2022 走看看