通过by_android_uiautomator方法定位元素。
基本语法:driver.find_element_by_android_uiautomator("xx")
1.通过className来定位语法:
new UiSelector().className("class名称")
页面上的class属性一般不唯一,多半用在复数定位时候。此时定位相应下标
driver.find_elements_by_android_uiautomator("new UiSelector().className(‘android.widget.ImageView’)")[2].click()
2.通过text文本定位语法 :
new UiSelector().text("text文本")
driver.find_element_by_android_uiautomator("new UiSelector().text(‘用户名’)").click()
2.1.如果文本比较长,可以用textContains模糊匹配
new UiSelector().textContains("包含text文本")
driver.find_element_by_android_uiautomator("new UiSelector().textContains(‘用’)").click()
同样可以用textStartsWith是以某个文本开头来匹配
new UiSelector().textStartsWith("以text文本开头")
3.通过resourceId的方法
new UiSelector().resourceId("id")
4.description 也是用contenet-des属性定位
new UiSelector().description("contenet-des属性")
5.组合定位
1).id与text属性组合
#id+text
id_text = 'resourceId("com.baidu.yuedu:id/webbooktitle").text("小说")' driver.find_element_by_android_uiautomator(id_text).click()
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.baidu.yuedu:id/rl_tabs").childSelector(text("小说"))' driver.find_element_by_android_uiautomator(son).click()
2).兄弟定位fromParent
有时候父元素不好定位,但是跟他相邻的兄弟元素很好定位,这时候就可以通过兄弟元素,找到同一父级元素下的子元素
#兄弟关系
fromParent brother = 'resourceId("com.baidu.yuedu:id/lefttitle").fromParent(text("图书"))' driver.find_element_by_android_uiautomator(brother).click()