經過appium-desktop定位元素html
ClassNameandroid
Androidios
Android的class屬性對應ClassName定位方式,ClassName通常都是會重複的,能夠經過index來獲取須要的元素。(從0開始查找dom樹中的同名class屬性)app
iOS框架
iOS的type屬性對應CLassName定位方式,ClassName通常都是會重複的,能夠經過index來獲取須要的元素。(從0開始查找dom樹中的同名class屬性)dom
ID測試
Androidui
Android的resource-id對應ID定位方式,這個id也可能存在重複狀況,能夠經過index來獲取須要的元素。(從0開始查找dom樹中的同名resource-id屬性)spa
使用appium-desktop來獲取元素時,若是提示有id的定位方式,則能夠只接獲取,表明惟一。code
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