Python+Appium学习篇之元素定位

背景:

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

 

posted @ 2018-07-20 10:23  洛愽  阅读(1277)  评论(0编辑  收藏  举报