码迷,mamicode.com
首页 > 移动开发 > 详细

Appium+python定位方式

时间:2018-07-09 23:11:11      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:格式   ued   xpath   edit   组合   arch   xxx   报错   简单   

介绍appium 几种简单的定位方式

1、id定位
格式:driver.find_element_by_id("这里是resource-id")
driver.find_element_by_id("com.taobao.taobao:id/home_searchedit")
2、name定位
如上图的定位,就可以通过name来定位
格式:driver.find_element_by_name("这里是text")
driver.find_element_by_name("搭配新宠不能缺")
注:appium1.5以下老的版本是可以通过name定位的,新版本从1.5以后都不支持name定位了**
(如果text属性为空,那就不能通过name属性定位了)
3、class定位
格式:driver.find_element_by_class_name("class属性")
driver.find_element_by_class_name("android.widget.EditText")
(注:一般一个页面上的class属性不唯一,元素不唯一的话定位会报错了)
4、accessibility_id定位就是通过UI Automator工具查看的content-desc属性
(当然content-desc属性为空,就不能通过这个属性定位了,这里只是举个例子)
看到content-desc属性有值,就可以通过accessibility_id来定位了

格式:driver.find_element_by_accessibility_id(“content-desc的值”)

driver.find_element_by_accessibility_id(“xxx”)

(注:一般一个页面上的class属性不唯一,元素不唯一的话定位会报错了)
除了上面的这几个通过属性定位的,复杂一点的还可以通过xpath和AndroidUiAutomator来定位

5、list定位,即列表定位。driver.find_elements_by_id("com.baidu.yuedu:id/tab_search")[0].click()。
说明:有些列表页面页面没有id属性,有class属性,但class属性不唯一。或者有id属性,但是列表的id属性都一样。这个时候可以采用list定位,取id相同或class相同的,定位一组元素,再通过下标取出元素,便可定位到想取出的元素。
单数定位:find_element 为定位单数
复数定位:find_elements 为定位复数
例子:
searchs = driver.find_elements_by_id("com.baidu.yuedu:id/tab_search")
print(searchs) # 打印list
print(type(searchs))
该定位到为list类型
定位一组之后,如果要点击该元素,那就先从list里面通过下标索引取出元素对象,再click就可以了。下标索引是从0开始。
# list定位
driver.find_elements_by_id("com.baidu.yuedu:id/tab_search")[0].click()

6、xpath定位
appium 1.5版本后name定位方式无法使用,可使用xpath代替
appium中xpath语法://*[@text=‘页面text文本‘]
例子:
driver.find_element_by_xpath("//*[@text=‘小说‘]").click()
若一个界面的text值不唯一呢?
xpath语法里面*是代表匹配任意的值,在selenium里面*是匹配任意标签,appium里的*是匹配任意class名称,如果几个文本的class属性不一样,就可以通过以下组合:

Appium+python定位方式

标签:格式   ued   xpath   edit   组合   arch   xxx   报错   简单   

原文地址:https://www.cnblogs.com/LinxiHuang/p/9286484.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!