背景:
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('点击完毕')