安卓原生页面常用元素定位方法的Python使用,代码演示使用的哔哩哔哩安卓客户端,模拟器是夜神模拟器,尝试了最常用的id,class,name,xpath定位方式,还有一些其他的定位方式是webview特有的,持续更新ing
#coding=utf-8
'''
Created on 2017/12/24 0024
@author:Changge
'''
from appium import webdriver
import time
desired_caps = {
'platformName':'Android',
'deviceName':'127.0.0.1:62001',
'platformVersion':'4.4.2',
'appPackage':'tv.danmaku.bili',
'appActivity':'tv.danmaku.bili.ui.splash.SplashActivity',
'unicodeKeyboard':True,
'resetKeyboard':True
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
##休眠5s等待页面加载完成
time.sleep(5)
'''
各种定位方法尝试
'''
#id定位,通过resource-id属性
#id单数定位,id唯一
id_ele = driver.find_element_by_id('tv.danmaku.bili:id/largeLabel')
print("id单数定位:" + id_ele.text)
#id复数定位
id_eles = driver.find_elements_by_id('tv.danmaku.bili:id/tab_title')
texts = []
for ele in id_eles:
texts.append(ele.text)
print("id复数定位:" + str(texts))
#class单数定位
# class_ele = driver.find_element_by_class_name('android.support.v7.widget.RecyclerView')
# print('class单数定位:'+class_ele.get_attribute('class'))
#class复数定位
class_eles = driver.find_elements_by_class_name('android.widget.TextView')
texts = []
for ele in class_eles:
texts.append(ele.text)
print('class复数定位:'+str(texts))
#name单数定位,通过text属性
name_ele = driver.find_element_by_name('推荐')
print('name单数定位:'+name_ele.text)
#name复数定位
name_eles = driver.find_elements_by_name('编辑推荐')
texts = []
for ele in name_eles:
texts.append(ele.text)
print('name复数定位:'+str(texts))
#xpath单数定位
xpath_ele = driver.find_element_by_xpath('//android.widget.TextView[contains(@resource-id,"tv.danmaku.bili:id/ranks")]')
print('xpath单数定位:'+xpath_ele.text)
#xpath复数定位
xpath_eles = driver.find_elements_by_xpath('//android.widget.TextView')
texts = []
for ele in xpath_eles:
texts.append(ele.text)
print('xpath复数定位:'+str(texts))
driver.quit()