一、为什么要做App自动化
随着移动终端的普及,手机应用越来越多,也越来越重要。App的回归测试用例数量也越来越多,全量回归也越来越消耗时间。另外移动端碎片化严重,尤其是Android端碎片化严重性更为突出,市面上Android机型甚至有几万,几十万款,所以我们也需要通过这种自动化测试帮助我们减少兼容性的测试工作。总之为了减少这种重复的、大量回归到测试任务,我们迫切需要引进一些自动化测试来协助。
二、Appium是什么?
Appium:
适用于 原生或混合移动应用 的 开源 自动化测试 框架
Appium应用 WebDriver: JSON wire protocol 驱动安卓和iOS移动应用,也就是对 webdriver 的封装
三、为什么选择Appium框架?
-
Appium的特点
1. 支持多平台,如:Android、iOS等
2. 支持多语言,如:java、python等
3. Appium可以在Windows、Linux等桌面系统运行
4. 开源免费【★★★★★】
5. 不需要重新编译或者修改应用
四、Appium 环境搭建
- 搭建 python 环境
- 搭建 JDK 环境 【Android编写语言为java】
- 搭建 SDK 环境 [Android的软件包]
- 下载安装 Appium 客户端
- 安装 appium-client
- pip install selenium
- pip install Appium-Python-Client
详细的安装方法请参考:Appium环境搭建
五、第一个脚本Python+Appium启动手机App:
前置条件:
from appium import webdriver
import time
# 定义一个变量:desired_caps 字典
desired_caps = {}
# 测试手机平台
desired_caps['platformNane'] = 'Android'
# 测试手机平台版本号
desired_caps['platformVersion'] = '5.1'
# 设备名称(自定义,可写死,但不能为空)
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['noReset'] = 'True'
# 测试app的安装包名(包名唯一)
# 获取方式:cmd执行命令:
# ① aapt dump badging apk文件 ,点击回车【需在aapt目录下执行】
# ② adb shell dumpsys activity top|findstr "ACTIVITY"【apk启动后立刻执行】
desired_caps['appPackage'] = 'app的包名'
desired_caps['appActivity'] = 'app的入口名'
# 初始化driver ,将上面的参数传入
driver = webdriver.Remote('http://localhost:4723/wb/hub',desired_caps)
# 隐式等待40s
driver.implicitly_wait(40)
# 定位到控件并点击
el = self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/expand_content_view")
el.click()
# 显示等待3s
time.sleep(3)
# 退出
driver.quit()