码迷,mamicode.com
首页 > 移动开发 > 详细

Appium移动端自动化:元素定位方式总结

时间:2019-01-08 17:20:57      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:速度   match   联系   运行   手机   常用   api   tty   获取   

ClassName

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

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

# 通过class_name定位,取class内容:
driver.find_element_by_class_name("android.widget.ImageView")

 

ID

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

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

# 通过id定位,取resource-id的值:
driver.find_element_by_id(com.manboker.headportrait:id/entry_album_set)

  

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
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

 

Appium移动端自动化:元素定位方式总结

标签:速度   match   联系   运行   手机   常用   api   tty   获取   

原文地址:https://www.cnblogs.com/haifeima/p/10239869.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!