Appium之uiautomator定位元素


元素定位方式有多種,Android也有自身獨有的定位方式。下面就單獨介紹其基於uiautomator定位元素的方法:

基本語法:

driver.find_element_by_android_uiautomator(xx)

1).通過text文本定位語法

  new UiSelector().text("text文本")

#text
loc_text = 'new UiSelector().text("圖書")'
driver.find_element_by_android_uiautomator(loc_text).click()

2).如果文本比較長,可以用textContains模糊匹配

  new UiSelector().textContains("包含text文本")

# textContains
loc_textContains = 'new UiSelector().textContains("圖")'
driver.find_element_by_android_uiautomator(loc_textContains).click()

3).同樣可以用textStartsWith是以某個文本開頭來匹配

  new UiSelector().textStartsWith("以text文本開頭")

#textStartsWith
loc_textStart = 'new UiSelector().textStartsWith("圖")'
driver.find_element_by_android_uiautomator(loc_textStart).click()

4).也可以用正則表達式textMatches匹配

  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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM