一、概述
本文将介绍如何在macOS系统下一步一步搭建Appium框架,支持对Android设备进行UI自动化测试,并使用python编写测试脚本,最终实现一个简单的UI自动化测试用例。
二、软件安装信息汇总

三、安装步骤
Appium框架划分为三大部分(参考文章Appium框架简介):Appium客户端、Appium服务端和被测对象三大部分。在本文中,我们选择的组合是:python作为Appium客户端编写脚本、Appium服务端运行在macOS系统上并支持与Android设备进行连接、被测对象是Android设备或者Android虚拟器。因此接下来的安装过程也按照这三部分进行划分(本文的Appium服务端和客户端处于同一台macOS机器上),最核心也最复杂的部分是Appium服务端的安装。
第1部分: Appium客户端安装
Appium客户端主要是安装python以及支持与Appium服务端通信和交互的python接口库。
1、安装python
1.1 下载安装包并安装
去python官网下载支持macOS系统的安装包,建议安装python3。
1.2 验证安装结果
命令行输入python或python3,会出现如下回显:

2、安装基于python的Appium客户端
安装完python3后,会自带python的包安装管理工具pip,因此在命令行执行如下命令(细节可以参考链接)安装Appium客户端:
pip install Appium-Python-Client
安装完成后,输入如下命令检查是否安装成功:
pip show Appium-Python-Client
正常安装会回显如下信息。

3、安装基于python测试框架pytest
这一步不是必须的,因为python本身自带单元测试框架unittest,pytest是python下另外一款优秀的测试框架,可以根据个人喜好安装使用,安装命令如下:
pip install pytest
安装之后使用如下命令查询安装结果:
pip show pytest
安装成功后会显示如下信息:

第2部分: Appium服务端安装
1、安装JDK
1.1 下载安装包并安装
JDK的下载链接如下,本文下载的是JDK 8u111,高版本的JDK跟Android SDK Manager和uiautomatorviewer等工具有兼容性问题,导致打不开或者打开之后界面空白:
https://www.oracle.com/webapps/redirect/signon?nexturl=https://download.oracle.com/otn/java/jdk/8u111-b14/jdk-8u111-macosx-x64.dmg。下载的Mac OS X的dmg包,双击按照提示完成安装。

1.2 设置JDK环境变量
安装完成后,需要设置JDK环境变量JAVA_HOME,并将JAVA_HOME添加到系统环境变量PATH中,具体步骤如下:
打开~/.bash_profile文件,添加如下命令
export JAVA_HOME=/your/java/install/path
export PATH=$PATH:$JAVA_HOME
注意:上述JDK安装路径需要替换成实际的安装路径。
对于本文中使用的macOS系统而言,上述命令为:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/bin
export PATH=$PATH:$JAVA_HOME
添加后命令行执行source ~/.bash_profile重新加载环境变量,使用echo $JAVA_HOME,如果能显示正确的路径,表明环境变量配置成功。
1.3 验证安装结果
命令行执行java -version查看JDK版本号,会得到类似下图的版本号显示(根据安装JDK版本不同而不同)。

2、安装Android SDK
2.1 下载安装包并安装
官网下载链接:http://developer.android.com/sdk/index.html,如果无法访问,可以使用如下下载链接:https://www.androiddevtools.cn/。本文下载的是后者的包android-sdk_r24.4.macosx.zip,下载解压即可。将解压后的文件夹复制到安装目录(例如/XXX),这个目录后续要添加到环境变量。
2.2 设置Android SDK环境变量
上步完成后,需要设置环境变量ANDROID_HOME,并将ANDROID_HOME添加到系统环境变量PATH中,具体步骤如下:
打开~/.bash_profile文件,添加如下命令
export ANDROID_HOME=/your/android-sdk/install/path
export PATH=$PATH:$ANDROID_HOME
注意:上述ANDROID_HOME安装路径需要替换成上个步骤的Android SDK实际的安装路径。
添加后命令行执行source ~/.bash_profile重新加载环境变量,使用echo $ANDROID_HOME,如果能显示正确的路径,表明环境变量配置成功。
2.3 安装SDK工具
上个步骤(环境变量添加)完成后,需要安装SDK相关的工具(例如跟Android设备交互的adb命令、获取Android设备控件信息的uiautomatorviewer命令等),在命令行执行android,会弹出如下界面:

需要选中Platform-tools、Build-tools、Android API包进行安装:

2.4 验证安装结果
命令行执行adb --version,会得到如下回显:

3、安装node.js和npm
Mac下安装推荐使用Homebrew来安装管理包,Homebrew的安装方法很简单,见https://www.jianshu.com/p/9e9cc8c06ccb。
执行如下命令安装node.js
brew install node
安装完成后,npm会默认安装,检测是否安装成功,可以运行命令:
node -v
npm -v
能正常回显版本号说明安装成功。
4、安装Appium
Appium安装分为两部分,一部分是Appium server,另一部分是针对不同测试对象(例如Android、iOS、Chrome等)需要安装的Driver。
4.1 安装Appium server
执行命令npm i -g appium@next安装,请参考官方链接。
执行完成后,输入appium命令,回显如下信息说明安装成功:

4.2 安装Appium Driver
Driver跟被测对象交互,目前官方维护的Driver如下表:

因为本文的测试对象是Android,因此需要安装的Dirver是UiAutomator2,执行如下命令安装:
appium driver install uiautomator2

第3部分: 被测对象
这里针对的就是Android设备,因此被测对象可以是模拟器,也可以是真实的Android手机,本文只针对模拟器进行说明。
1、创建模拟器AVD
当不用真机进行调试时候,可以通过创建模拟器进行调试,创建Android手机模拟器(简称AVD)有两种方法:通过命令行创建和通过AVD Manager创建。
1.1 通过命令行创建AVD
- 查看可创建的
AVD列表
android list targets
显示可能如下:

- 创建一个
AVD,name 为给AVD取的名称,id 为上一步查询到的AVD的ID。例如AVD名称是"Nexus10",AVD的ID是"6"或"Google Inc.:Google APIs:21"。
android create avd -nname-tid
例如:android create avd -n "android5" -t 6
1.2 通过AVD Manager创建AVD
- 通过执行如下命令,打开
AVD Manager界面:
android avd

-
点击
Create,填写信息后,点击OK保存即可,注意Target和CPU/ABI,可以使用Android SDK Manager下载对应版本的Android API,本文使用的是API 21。
创建AVD -
创建完成之后会显示在设备列表页
创建完成
1.3 启动AVD
除了从AVD Manager界面查看创建的AVD设备列表,还可以通过命令行执行android list avd来查看当前系统创建AVD设备列表。

可以在AVD Manager界面,选中创建的AVD设备,点击Start-Launch启动。
可以通过命令行执行如下命令启动一个已经创建的AVD设备:
emulator -avdname
备注:name即前面创建的AVD设备名称,例如emulator -avd android5
启动成功后页面如下:

备注:打开AVD模拟设备,可能会提示HAXM is not installed,需要安装HAXM来加速,使得模拟器运行速度加快,手动安装方法可以见链接https://github.com/intel/haxm/wiki/Installation-Instructions-on-macOS。
2、三方手机模拟器
比较出名的Android手机三方模拟器有雷电、夜神、网易MuMu等,雷电不支持macOS系统,后两者是支持的,以网易MuMu为例,下载mac版本,链接地址为https://mumu.163.com/update/other/:

安装后启动,启动成功界面如下:

模拟器启动成功后,可以在命令行通过adb devices查询到模拟器设备:

四、结语
至此,在macOS系统下安装Appium环境搭建完成,下一步就是编写自动化测试用例去操作手机或者模拟器。
总结一下需要如何将Appium环境运行起来:
- 启动
Appium服务器,使用appium命令,请参考第2部分的章节4。
- 启动
- 启动模拟器或连接真实手机,如何使用模拟器请参考本文
第3部分。
- 启动模拟器或连接真实手机,如何使用模拟器请参考本文
- 使用
Appium客户端编写测试脚本,如何基于python编写第一个自动化测试用例,可以参考文章第一个Appium自动化测试用例。
- 使用

