Appium中定位方式by_android_uiautomator與driver.find_element_by_xpath

一、語法一:driver.find_element_by_android_uiautomator("xx")
1.通過className來定位語法:
driver.find_element_by_android_uiautomator(
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方式定位如果兄弟元素是第一個元素,則是它自己;如果是其他元素,則是定位的它這個元素的上一個子元素!!)
#兄弟關係
fromParent brother = 'resourceId("com.baidu.yuedu:id/lefttitle").fromParent(text("互聯網"))' driver.find_element_by_android_uiautomator(brother).click()

二、語法二:driver.find_element_by_xpath

#通過content-desc定位

driver.find_element_by_xpath("//*[@content-desc='單選題']")

#父節點元素   /../

driver.find_element_by_xpath(
    "//*[@content-desc='單選題']/../android.view.View[2]")

單選題元素的父元素下的View的第2個元素

#兄弟元素

following-sibling:: 找到當前節點的後面一個節點,preceding-sibling::前面節點
driver.find_element_by_xpath(
    "//*[@content-desc='提示']/following-sibling::android.view.View")

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章