appium几种元素定位(id,class,content-desc,AndroidUiAutomator,bound,相对定位-通过父类,xpath)

appium 五种定位方式
1.通过id定位,resrouce-id
2.通过ClassName定位: classname
3.通过Accessiblityld定位:content-desc
4.通过AndroidUiAutomator

5.根据bound定位

6.相对定位

7.通过xpath定位(app中很少用到)终极定位

通过id定位,

resrouce-id

driver.find_element_by_id('co****ban:id/navigation_tiku').click()
time.sleep(2)


通过Accessiblityld定位:content-desc


driver.find_elements_by_accessibility_id()#值为content-desc的值

通过ClassName定位: classname

driver.find_element_by_class_name()


通过AndroidUiAutomator

driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.TextView").textContains("信息").resourceId("com.lemon.lemonban:id/category_title")').click()

根据bound定位

目前使用bounds定位的方式一般是因为这个元素clickable=false时,用bounds进行定位后用tap方法模拟点击。


相对定位

先找到元素的父元素节点,再通过父元素进行元素定位

root_element=driver.find_element_by_id('id')
root_element.find_element_by_class_name('android.widget.TextView').click()


通过xpath定位(app中很少用到)
driver.find_element_by_xpath('//android.widget.ImageView[@resource-id="com.zhijiepay.xls:id/confirm_ok"]').click()
#注意调试时不关闭driver,则认为进程还在开启中,uiautomatorviewer截图会出现失败。

本身SDK自带的uiautomatorviewer可能没有获取xpath的功能。

下载可以获取xpath的uiautomatorviewer 的 github 地址:https://github.com/lazytestteam/lazyuiautomatorviewer

将新的jar包放到原来的uiautomatorviewer的jar包目录,名字一定要和原生的jar包名字相同,不然会打不开。

运行uniautomatorviewwe.bat结果如下:

driver.find_element_by_xpath("//android.widget.ImageView[@resource-id='com.zhijiepay.xls:id/confirm_ok']").click()

由上面可以看出,xpath是由resource-id 和 class 拼接起来的:

xpath = //"classname"[@resource-id="resourceid "]

@后面可以是resource-id,也可以是其他的属性

原文地址:https://www.cnblogs.com/may18/p/14474147.html