appium提供安卓端几种定位方式如下:

1.id定位

通过元素的resource-id属性来定位元素

方法名:find_element_by_id("resource-id值")

2.classname定位

通过元素的class属性

方法名:find_element_by_class_name("class值")

3.AccessibilityId定位

通过元素的的content-desc属性

方法名:find_element_by_Accessibility_id("conten-desc值")

4.AndroidUiAutomator定位

UiAutomator元素定位是Android系统原生支持的定位方式,虽然与xpath类似,但比它更好用,且支持的元素全部属性定位,定位原理是通过android自带的android uiautomator的类库区查找元素。

方法名:find_element_by_android_uiautomator("uiSelector表达式")

该方法的参数为UIselector类定位元素的表达式: new UiSelector().函数名称("定位表达式")

实例化一个UIselector对象,然后通过实例调用对应的方法。每一个方法返回的都是UIselector对象本身。

如:find_element_by_android_uiautomator(‘new UiSelector.textContains("登录")’)

注意:UIselector类下的函数表达式参数如果是字符串,必须是双引号。因为是java的语法风格,在java中双引号菜表示字符串。


方法名:find_element_by_android_uiautomator('uiSelector 表达式')

  该方法的参数为 UiSelector 类定位元素的表达式:new UiSelector().函数名称("定位表达式")

  实例化一个 UiSelector 对象,然后通过实例调用对应的方法,每一个方法返回的都是UiSelector 对象本身

  注意:UiSelector 类下面的函数的参数如果是字符串,必须是双引号,这是 Java 的语法风格,在 Java 中,双引号才表示字符串

UiSelector 类的常用定位的函数如下:

1.资源id方法

  • resourceId(String id)  资源 id
  • resourceIdMatches(String regex)  资源 id 正则

2.文本方法

  • text(String text)  文本匹配
  • textContains(String text)  文本包含
  • textStartsWith(String text)  文本开始字符
  • textMatches(String regex)  文本正则

3.描述方法

  • description(String desc)  描述
  • descriptionContains(String desc)  描述包含
  • descriptionStartsWith(String desc)  描述开始字符
  • descriptionMatches(String regex)  描述正则

4.类名方法

  • childSelector(UiSelector selector)  子类
  • fromParent(UiSelector selector)  父类
  • className(String className)  类名

5.索引、实例方法

  • index(int index)  编号
  • instance(int instance)  索引

6.特有属性方法

  • checked(boolean val)  选择属性
  • checkable(boolean val)  点击属性
  • enabled(boolean val)  enabled 属性
  • focusable(boolean val)  焦点属性
  • longClickable(boolean val)  长按属性
  •  scrollable(boolean val)  滚动属性
  • selected(boolean val)  选择属性

7.包名方法

  • packageName(String name)  包名
  • packageNameMatches(String regex)  包名正则

示例:

new UiSelector().text("text")  # 使用元素 text 属性定位
new UiSelector().resourceId("id")  # 使用 id 定位
new UiSelector().className("className")  # 使用元素类型定位

# 还可以元素多个属性自由组合
new UiSelector().className("className").text("text")
new UiSelector()..resourceId("id").clickable(val)

5.xpath定位

方法名:find_element_by_xpath("xpath表达式")

定位方式示例:

driver.find_element_by_id("com.xxxx.fenwo:id/bt_login").click()

driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.xxxx.fenwo:id/bt_login")')

driver.find_element_by_android_uiautomator('new UiSelector().text("发现")')

备注:name定位不支持appium1.5以上版本

1、name定位就是通过UI Automator工具查看的text属性

**appium1.5以下老的版本是可以通过name定位的,新版本从1.5以后都不支持name定位了**

(如果text属性为空,那就不能通过name属性定位了)

addview android 位置无效 android.view.view 定位元素_字符串

 

测试狗一枚