元素定位方式有多種,Android也有自身獨有的定位方式。下面就單獨介紹其基於uiautomator定位元素的方法:android
基本語法:web
driver.find_element_by_android_uiautomator(xx)正則表達式
1).經過text文本定位語法ui
new UiSelector().text("text文本")spa
#text loc_text = 'new UiSelector().text("圖書")' driver.find_element_by_android_uiautomator(loc_text).click()
2).若是文本比較長,能夠用textContains模糊匹配code
new UiSelector().textContains("包含text文本")blog
# textContains loc_textContains = 'new UiSelector().textContains("圖")' driver.find_element_by_android_uiautomator(loc_textContains).click()
3).一樣能夠用textStartsWith是以某個文本開頭來匹配ip
new UiSelector().textStartsWith("以text文本開頭")element
#textStartsWith loc_textStart = 'new UiSelector().textStartsWith("圖")' driver.find_element_by_android_uiautomator(loc_textStart).click()
4).也能夠用正則表達式textMatches匹配get
new UiSelector().textMatches("正則表達式")
2.resourceId
與by_id同樣
new UiSelector().resourceId("id")
#resourceId loc_id = 'new UiSelector().resourceId("com.baidu.yuedu:id/webbooktitle")' driver.find_element_by_android_uiautomator(loc_id).click()
3.className
頁面上的class屬性通常不惟一,多半用在複數定位時候。此時定位相應下標
new UiSelector().className("className")
#className複數定位 loc_class = 'new UiSelector().className("android.widget.TextView")' driver.find_elements_by_android_uiautomator(loc_class)[2].click()
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()