Android元素定位方法
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中双引号菜表示字符串。
UIselector类的函数具体用法可参照之前的博客:https://www.cnblogs.com/123blog/p/12594714.html
方法名: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属性定位了)