Appium实现安卓app自动化测试或爬虫功能
自动化测试和爬虫基本是相同的操作,首先定位页面元素,再次爬虫是获取数据,测试是封装请求参数发送请求查看请求结果。自动化测试包括接口测试、web测试、app测试,接口测试用request包,web测试可以用selenium,安卓app测试则需要通过Appium服务器访问手机app。本文只讲述window电脑环境,Android手机系统app测试方法。一、环境准备:(1)需要安装软件:jdk8、App
自动化测试和爬虫基本是相同的操作,首先定位页面元素,再次爬虫是获取数据,测试是封装请求参数发送请求查看请求结果。
自动化测试包括接口测试、web测试、app测试,接口测试用request包,web测试可以用selenium,安卓app测试则需要通过Appium服务器访问手机app。本文只讲述window电脑环境,Android手机系统app测试方法。
一、环境准备:
(1)需要安装软件:jdk8、Appium、AndroidSDK包,下载地址:
链接:https://pan.baidu.com/s/1b_FWWmc0q08ibIvr3Tb7-g
提取码:olzv
(2)需要添加配置jdk8环境变量、AndroidSDK环境变量、Appium环境变量。
(3)安装appium-python-client环境
pip install appium-python-client
(4)选择华为或小米等主流手机,以华为手机为例:
设置——系统——关于手机——版本号,不停的点击“版本号”,直至变为开发模式,然后退回上一级(系统目录下),多出开发人员选项,进入开发人员选项,打开app调试。
(5)判断环境变量配置是否成功,打开任意一个cmd黑窗口,输入:adb,如果不报错则环境变量配置成功。
二、代码操作:
(1)先启动Appium,点击Start Server,
(2)判断设备是否连接成功;adb devices -l
(3)python代码:
from appium import webdriver
from appium.webdriver.extensions.android.nativekey import AndroidKey
import time
desired_caps = {
'platformName': 'Android', # 被测手机是安卓
'platformVersion': '9', # 手机安卓版本
'deviceName': 'xxx', # 设备名,安卓手机可以随意填写
'appPackage': 'tv.danmaku.bili', # 启动APP Package名称
'appActivity': '.ui.splash.SplashActivity', # 启动Activity名称
'unicodeKeyboard': True, # 使用自带输入法,输入中文时填True
'resetKeyboard': True, # 执行完程序恢复原来输入法
'noReset': True, # 不要重置App
'newCommandTimeout': 6000,
'automationName': 'UiAutomator2'
# 'app': r'd:\apk\bili.apk',
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 设置缺省等待时间
driver.implicitly_wait(5)
# 如果有`青少年保护`界面,点击`我知道了`
iknow = driver.find_elements_by_id("text3")
if iknow:
iknow.click()
# 根据id定位搜索位置框,点击
driver.find_element_by_id("expand_search").click()
# 根据id定位搜索输入框,点击
# sbox = driver.find_element_by_id('search_src_text')
sbox = driver.find_element_by_accessibility_id('搜索查询')
sbox.send_keys('白月黑羽')
# 输入回车键,确定搜索
driver.press_keycode(AndroidKey.ENTER)
# driver.find_element_by_xpath("//*[@resource-id='tv.danmaku.bili:id/tabs']//android.widget.TextView[3]").click()
# 选择(定位)所有视频标题
eles = driver.find_elements_by_id("title")
for ele in eles:
# 打印标题
print(ele.text)
width = driver.get_window_size()['width']
height = driver.get_window_size()['height']
for i in range(1,100):
time.sleep(5)
driver.swipe(width / 2, height * 3 / 4, width / 2, height / 4);
# titles = driver.find_elements_by_id("title")
# play_num = driver.find_elements_by_id("play_num")
# danmakus_num = driver.find_elements_by_id("danmakus_num")
#
# for j in titles:
# print(j.text)
# for j in play_num:
# print(j.text)
# for j in danmakus_num:
# print(j.text)
input('**** Press to quit..')
driver.quit()
(4)pycharm中运行上述代码,则app中会搜索“白月黑羽”,并滑动列表。
三、定位app中页面元素
定位页面元素有两种方式;
方式一:通过AndroidSDK提供的uiautomatorviewer查看,位置在androidsdk\tools\binuiautomatorviewer.bat,双击,
方式二:通过Appium右上角的放大镜按钮调出,然后输入参数,参数和python中代码中相同,点击Start Session
更多推荐
所有评论(0)