通过appium-desktop定位元素

发表于:2018-10-22 16:53

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:尘世风    来源:51testing采编

   
  
   
   
  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个'")

   上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号