Appium之定位元素
阿新 • • 發佈:2020-09-14
常用的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