appium-2-uiautomator定位
Posted sparkprogram
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了appium-2-uiautomator定位相关的知识,希望对你有一定的参考价值。
我们经常使用android自身独有的定位方式,
driver.find_element_by_id("xxxxx")
driver.find_elements_by_id("xxxx")
driver.find_element_by_class_name("xxxx")
这里写的elements的意思就是这个页面,有很多个id,假如你写element的话,就是默认取第一个符合要求的元素
上面的这些都是我们经常使用到的定位方式,都是常用的
基本语法:想要使用该方法定位,一定要有uiautomator库
driver.find_element_by_android_uiautomator(xx)
1).通过text文本定位语法
new UiSelector().text("text文本")
text = ‘new UiSelector().text("xxxx")‘ driver.find_element_by_android_uiautomator(text).click()
2).如果文本比较长,可以用textContains模糊匹配
new UiSelector().textContains("包含text文本")
textContains = ‘new UiSelector().textContains("xxx")‘ driver.find_element_by_android_uiautomator(textContains).click()
3).同样可以用textStartsWith是以某个文本开头来匹配
new UiSelector().textStartsWith("以text文本开头")
textStart = ‘new UiSelector().textStartsWith("x")‘ click和上面的是一样的,
4).也可以用正则表达式textMatches匹配
new UiSelector().textMatches("正则表达式")
2.resourceId
与by_id一样
new UiSelector().resourceId("id")
id = ‘new UiSelector().resourceId("xxx")‘ driver.find_element_by_android_uiautomator(id).click()
3.className
页面上的class属性一般不唯一,多半用在复数定位时候。此时定位相应下标
new UiSelector().className("className")
#className复数定位 classes = ‘new UiSelector().className("android.widget.TextView")‘ driver.find_elements_by_android_uiautomator(classes)[2].click()
这里的【】表示你要取获取到的第几个元素索引位置
4.description
也是用contenet-des属性定位
new UiSelector().description("contenet-des属性")
5.组合定位
1).id与text属性组合
#id+text id_text = ‘resourceId("com.taobao.idlefish:id/center_text").text("闲鱼")‘ driver.find_element_by_android_uiautomator(id_text).click()
假如使用Android自带的定位要结合text使用的话,语法如下:
driver.finde_element_by_id("xxx").get_attribute("元素属性名")
比如是text,就driver.finde_element_by_id("xxx").get_attribute("text")
2).class与text属性组合
#class+text class_text = ‘className("android.widget.TextView").text("闲鱼")‘ driver.find_element_by_android_uiautomator(class_text).click()
6.关系定位
1).父子定位childSelector
有时候不能直接定位某个元素,但是它的父元素很好定位,这时候就先定位父元素,通过父元素找儿子
如上定位书架:
#父子关系childSelector son = ‘resourceId("com.taobao.idlefish:id/center_text").childSelector(text("闲鱼"))‘ driver.find_element_by_android_uiautomator(son).click()
2).兄弟定位fromParent(这个定位,经常会使用到)以上所有的一定要练习,不练习你永远不知道你会遇到什么坑
有时候父元素不好定位,但是跟他相邻的兄弟元素很好定位,这时候就可以通过兄弟元素,找到同一父级元素下的子元素
#兄弟关系fromParent brother = ‘resourceId("com.taobao.idlefish:id/center_text").fromParent(text("闲鱼"))‘ driver.find_element_by_android_uiautomator(brother).click()
以上是关于appium-2-uiautomator定位的主要内容,如果未能解决你的问题,请参考以下文章