1. 程式人生 > 實用技巧 >Appium之定位元素

Appium之定位元素

常用的appium元素定位工具:

(1)Android SDK 中提供的元素定位工具uiautomatorviewer;

(2)AppiumDesktop提供的元素定位工具Appium Inspector ;

(3)自動化框架UIAutomator2提供的元素定位工具weditor;

常用元素定位方法:

1、通過resourceId定位

driver.find_element_by_id("more-icon")

2、通過text的文字屬性定位

driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("食品")
').click()

3、通過xpath定位

driver.find_element_by_xpath('//android.widget.ListView/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]').click()

而對於text屬性為文字的元素,也可以用xpath定位:

driver.find_element_by_xpath("//*[@text='圖書']").click()

4、通過accessibility_id定位

accessibility_id定位就是通過UI Automator(即Android_SDK自帶的uiautomatorviewer)工具檢視的content-desc屬性

driver.find_element_by_xpath("//*[@resource-id="com.taobao.taobao:id/rv_main_contai")

使用uiautomator方法定位

即driver.find_element_by_android_uiautomator('new UiSelector().xxx("xxx")')方法。

(1)text屬性

driver.find_element_by_android_uiautomator('new UiSelector().text("食品")').click()
driver.find_element_by_android_uiautomator(
'new UiSelector().text("text文字")').click() driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("以xxx開頭的文字")').click() driver.find_element_by_android_uiautomator('new UiSelector().textContains("包含xxx文字")').click() driver.find_element_by_android_uiautomator('new UiSelector().textMatches("正則表示式")')

(2)resourceId屬性

driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.baidu.yuedu:id/webbooktitle")').click()

(3)className屬性

頁面上的class屬性一般不唯一,可先用複數定位,再用下標(索引)具體定位。

driver.find_elements_by_android_uiautomator('new UiSelector().className("android.widget.TextView")')[1].click()

(4)description屬性

driver.find_element_by_android_uiautomator('new UiSelector().description("contenet-des屬性")').click()

組合定位元素

(1)resourceId+text 或 className+text

# className+text組合定位
class_text = 'className("android.widget.TextView").text("150")'
driver.find_element_by_android_uiautomator(class_text).click()

# resourceId+text組合定位
id_text = 'resourceId("com.fenbi.android.solar:id/couponValue").text("150")'
driver.find_element_by_android_uiautomator(id_text).click()

父子定位childSelector

# 父子定位childSelector
son_ele = 'className("android.widget.LinearLayout").childSelector(text("數學"))'
driver.find_element_by_android_uiautomator(son_ele).click()

兄弟定位fromParent

# 兄弟定位fromParent
bro_ele = 'resourceId("com.fenbi.android.solar:id/tutor_tab").fromParent(text("發現"))'
driver.find_element_by_android_uiautomator(bro_ele).click()

參考:https://www.cnblogs.com/yoyoketang/p/7833554.html