1、ID

Android

Android的resource-id对应ID定位方式,可以通过index来获取需要的元素(从0开始查找dom树中的同名resource-id属性)。使用appium-desktop来获取元素时,id和resource-id是相同的,如果只有resource-id,可能存在重复现象,如果提示有id的定位方式,则可以只接获取,代表唯一。

driver.find_element_by_id('com.tencent.mobileqq:id/btn_login')

2、AccessibilityId

Android

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

driver.find_element_by_accessibility_id('请输入QQ号码或手机或邮箱')

iOS

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

3、Xpath

Android

Android的Xpath定位与PC的Xpath定位大同小异,可以通过相对路径的定位方式定位。区别在于,这里相对路径定位的//后只可以接Android的class属性或*。

driver.find_element_by_xpath('//android.widget.EditText[@text="QQ号/手机号/邮箱"]')

iOS 

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

4、UIAutomator

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(".*历$")')

5、iOSPredicateString

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

driver.find_elements_by_ios_predicate("label == '登录'")

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

6、iOSUIAutomation

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

最新文章

  1. 支持 .NET Core 的 Memcached 客户端 EnyimMemcachedCore
  2. SQL where 1=1的作用
  3. Linux恢复删除文件
  4. sql之独立子查询和相关子查询总结
  5. ios 添加到cell 上的button点击无效!扩大button的点击区域(黑魔法)
  6. viewWillLayoutSubView
  7. 自己动手开发编译器(四)利用DFA转换表建立扫描器
  8. QT中窗口刷新事件的学习总结
  9. MySQL高效获取记录总数
  10. OC-Protocol实现业务代理
  11. 容易centos配置docker维修
  12. Java 工具类—日期获得,随机数,系统命令,数据类型转换
  13. web中的——作者也不知道这里面写的啥
  14. python中剔除字典重复项,可以使用集合(set)。
  15. GC调优入门笔记
  16. Entity Framework Core系列之什么是Entity Framework Core
  17. linux 终端命令行的快捷键列表
  18. Android Activity的4种启动模式
  19. Linux DMA Engine framework(3)_dma controller驱动
  20. 第七章 鼠标(CONNECT)

热门文章

  1. Ajax跳入error的原因
  2. Linux--目录管理与文件管理--02
  3. Ubuntu打开中文输入法
  4. gd_t结构 bd_t结构
  5. SpringMVC @RequestMapping注解详解
  6. jmeter请求时出现no cookies
  7. netty之IO演进之路
  8. pyqt5-QTDesigner--控件操作
  9. CSS中的 vh/vw
  10. 阿里jetcache