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屬性定位了)