背景:
QQ郵箱為例;APPIUM版本=1.8
1. list下標定位
先看兩個定位信息
可以看出這里的 收件箱 和 星標郵件 的resource-Id 是一樣的,這里就可以用list來定位 收件箱 了
u'''list下標定位''' driver.find_elements_by_id('com.tencent.androidqqmail:id/q0')[0].click()
2.xpath定位
在這里可以看成是一個萬能的定位,只要后面的 收件箱 文本是唯一的就行
u'''xpath定位''' driver.find_element_by_xpath("//*[@text='收件箱']").click()
3.content-desc定位
這里就用 accessibility_id 來定位
u'''con-desc定位''' driver.find_element_by_accessibility_id('寫郵件和設置等功能').click()
4.文本定位
這里就用到 uiautomator 了
u'''文本定位''' ele='text("收件箱")' driver.find_element_by_android_uiautomator(ele).click()
5.組合定位
組合定位可以更精准,這個可以自由搭配(index+text,classname+id等等)
u'''組合定位(id+text)''' ele='resourceId("com.tencent.androidqqmail:id/q0").text("收件箱")' driver.find_element_by_android_uiautomator(ele).click()
6.父子定位
這里就來定位 寫郵件和設置等功能 按鈕
可以找到找到兒子的 resourceId
這里可以找到父親的classname
父親寫前面,兒子寫后面
u'''父子定位''' ele='className("android.widget.RelativeLayout").childSelector(resourceId("com.tencent.androidqqmail:id/f"))' driver.find_element_by_android_uiautomator(ele).click()
7.兄弟定位
找到能定位他們兩個的東東,這里就找了 resourceId
u'''兄弟定位''' ele='resourceId("com.tencent.androidqqmail:id/k").fromParent(resourceId("com.tencent.androidqqmail:id/f"))' driver.find_element_by_android_uiautomator(ele).click()
8.包含定位
u'''包含定位''' driver.find_element_by_xpath("//*[contains(text(),'【搶票】我能搶到票嗎')]").click()
總代碼:
# coding:utf-8 from appium import webdriver import time desired_caps = {'platformName': 'Android', 'deviceName': 'emulator-5554', 'platformVersion': '5.1.1', 'noReset': True, 'appPackage': 'com.tencent.androidqqmail', 'appActivity': 'com.tencent.qqmail.launcher.desktop.LauncherActivity'} driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) time.sleep(15) #用的模擬器,sleep久點 a=driver.find_elements_by_id('com.tencent.androidqqmail:id/q0') print(len(a)) #主要是打印出來看看有多少個 time.sleep(3) u'''list下標定位''' #driver.find_elements_by_id('com.tencent.androidqqmail:id/q0')[0].click() u'''xpath定位''' #driver.find_element_by_xpath("//*[@text='收件箱']").click() u'''con-desc定位''' #driver.find_element_by_accessibility_id('寫郵件和設置等功能').click() u'''文本定位''' #ele='text("收件箱")' #driver.find_element_by_android_uiautomator(ele).click() u'''組合定位(id+text)''' #ele='resourceId("com.tencent.androidqqmail:id/q0").text("收件箱")' #driver.find_element_by_android_uiautomator(ele).click() u'''父子定位''' #ele='className("android.widget.RelativeLayout").childSelector(resourceId("com.tencent.androidqqmail:id/f"))' #driver.find_element_by_android_uiautomator(ele).click() u'''兄弟定位''' ele='resourceId("com.tencent.androidqqmail:id/k").fromParent(resourceId("com.tencent.androidqqmail:id/f"))' driver.find_element_by_android_uiautomator(ele).click() print('點擊完畢')