Appium元素定位方式
1.由于Appium继承了Selenium,所以Selenium胡定位方式都可以使用。通过sdk->\tools 下的uiautomatorviewer工具获取id、name、classname等
2.uiautomator:driver.find_elements_by_android_uiautomator("uiautomator定位串"),实际上是调用uiautomator来定位
注意:driver.find_elements_by_android_uiautomator返回的是一个列表,列表保存的是找到的元素,所以无法click(),想要click()的话,必须通过索引
3.通过元素坐标定位,之后进行操作
案例:手机淘宝 -> 天猫 -> 返回
#coding=utf-8
from appium import webdriver
from time import sleep
import os
from selenium.webdriver.common.by import By
PATH = lambda p: os.path.abspath(
os.path.join(os.path.dirname(__file__), p)
)
desired_caps = {
'platformName':'Android',
'platformVersion':'4.4.2',
'deviceName':'Y15QKCNQ237LC',
# desired_caps['app'] =PATH('C:\\Users\\Administrator\\Desktop\\shoujitaobao_151.apk')
#如果手机未安装该软件,且安装包在电脑上,则需指定路径,包名和活动名可不指定
#如果手机已经安装,则不需指定路径,指定下面的包名和活动名即可
'appPackage':'com.taobao.taobao',
'appActivity':'com.taobao.tao.welcome.Welcome',
#屏蔽软键盘,方便输入中文
'unicodeKeyboard':True ,
'resetKeyboard':True
}
#启动app
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
sleep(5)
#定位方式一
# driver.find_element_by_name('天猫').click()
# test = driver.find_element(By.NAME,"天猫")
# print type(test)
# print test
# test.click()
#定位方式二
# driver.find_elements_by_android_uiautomator("new UiSelector().text(\"天猫\")")[0].click()
'''uiautomator定位
find_elements_by_android_uiautomator返回的是个列表,列表中保存的是找到的元素,所以无法click(),需要加索引才能进行click()
'''
#定位方式三
driver.tap([(19,370),(136,462)],1)
sleep(5)
driver.find_element_by_class_name("android.widget.ImageButton").click()