常用的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