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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM