Appium之uiautomator定位元素

元素定位方式有多種,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()
相關文章
相關標籤/搜索