以上圖為例,要定位到右下角的 我的 ,並點擊
# appium的webdriver提供了11種元素定位方法,在selenium的基礎上擴展了三個,可以在pycharm里面輸入driver.find_element_by然后會自動匹配出來
#通過id定位成功
driver.find_element_by_id("com.xyh.commerce:id/ll_personal").click()
#tap是模擬手指點擊,一般頁面上元素.語法有兩個參數,第一個是positions,是list類型最多五個點,duration是持續時間,單位毫秒
#通過tap定位成功
driver.tap([(600,1205)],300)
#通過xpath定位
driver.find_element_by_xpath("//*[@resource-id='com.xyh.commerce:id/ly_main_tab_bottom']//android.widget.LinearLayout[3]").click()
# 通過android_uiautomator定位
# 通過id定位
my = 'new UiSelector().resourceId("com.xyh.commerce:id/ll_personal")'
driver.find_element_by_android_uiautomator(my).click()
# 通過text定位
# 1.通過text文本定位語法
new UiSelector().text("text文本")
# 2.文本比較長的時候,可以用textContains模糊匹配,只要文本包含匹配內容就可以了。
new UiSelector().textContains("包含text文本")
# 3.textStartsWith是以某個文本開頭的匹配
new UiSelector().textStartsWith("以text文本開頭")
# 4.正則匹配textMatches,這個需要配合正則表達式,就不舉例了。
new UiSelector().textMatches("正則表達式")
# class屬性一般不唯一,多半用在復數定位,className復數定位
loc_class = 'new UiSelector().className("android.widget.TextView")'
driver.find_elements_by_android_uiautomator(loc_class)[2].click()
# 組合定位,一般組合用id,class,text這三個屬性會比較好一點
# id+class 屬性組合
id_class = 'resourceId("com.xyh.commerce:id/ll_personal").className("android.widget.LinearLayout")'
driver.find_element_by_android_uiautomator(id_class).click()
# 父子定位childSelector
# 有時候不能直接定位某個元素,但是它的父元素很好定位,這時候就先定位父元素,通過父元素找兒子。
son = 'resourceId("com.xyh.commerce:id/ll_personal").childSelector(text("我的"))'
driver.find_element_by_android_uiautomator(son).click()
# 兄弟定位fromParent
# 有時候父元素不好定位,但是跟他相鄰的兄弟元素很好定位,這時候就可以通過兄弟元素,找到同一父級元素下的子元素。
brother = 'resourceId("com.xyh.commerce:id/img_personal").fromParent(text("我的"))'
driver.find_element_by_android_uiautomator(brother).click()