Appium框架搭建:macOS系统下Android设备自动化测试环境搭建

一、概述

  本文将介绍如何在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 验证安装结果

  命令行输入pythonpython3,会出现如下回显:

安装python

2、安装基于pythonAppium客户端

  安装完python3后,会自带python的包安装管理工具pip,因此在命令行执行如下命令(细节可以参考链接)安装Appium客户端:

pip install Appium-Python-Client

  安装完成后,输入如下命令检查是否安装成功:

pip show Appium-Python-Client

  正常安装会回显如下信息。


Appium客户端
3、安装基于python测试框架pytest

  这一步不是必须的,因为python本身自带单元测试框架unittestpytestpython下另外一款优秀的测试框架,可以根据个人喜好安装使用,安装命令如下:

pip install pytest

  安装之后使用如下命令查询安装结果:

pip show pytest

  安装成功后会显示如下信息:


安装pytest

第2部分: Appium服务端安装

1、安装JDK
1.1 下载安装包并安装

  JDK的下载链接如下,本文下载的是JDK 8u111,高版本的JDKAndroid SDK Manageruiautomatorviewer等工具有兼容性问题,导致打不开或者打开之后界面空白:
https://www.oracle.com/webapps/redirect/signon?nexturl=https://download.oracle.com/otn/java/jdk/8u111-b14/jdk-8u111-macosx-x64.dmg。下载的Mac OS Xdmg包,双击按照提示完成安装。

下载JDK安装包

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版本不同而不同)。

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,会弹出如下界面:

Android SDK Manager

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


例如:下载Android API21,对应Android5
2.4 验证安装结果

  命令行执行adb --version,会得到如下回显:

SDK安装结果

3、安装node.jsnpm

  Mac下安装推荐使用Homebrew来安装管理包,Homebrew的安装方法很简单,见//www.greatytc.com/p/9e9cc8c06ccb

  执行如下命令安装node.js

brew install node

  安装完成后,npm会默认安装,检测是否安装成功,可以运行命令:

node -v
npm -v

  能正常回显版本号说明安装成功。

4、安装Appium

  Appium安装分为两部分,一部分是Appium server,另一部分是针对不同测试对象(例如AndroidiOSChrome等)需要安装的Driver

4.1 安装Appium server

  执行命令npm i -g appium@next安装,请参考官方链接
  执行完成后,输入appium命令,回显如下信息说明安装成功:

appium启动页面

4.2 安装Appium Driver

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

官方维护的Driver

因为本文的测试对象是Android,因此需要安装的DirverUiAutomator2,执行如下命令安装:

appium driver install uiautomator2

安装Driver

第3部分: 被测对象

  这里针对的就是Android设备,因此被测对象可以是模拟器,也可以是真实的Android手机,本文只针对模拟器进行说明。

1、创建模拟器AVD

  当不用真机进行调试时候,可以通过创建模拟器进行调试,创建Android手机模拟器(简称AVD)有两种方法:通过命令行创建和通过AVD Manager创建。

1.1 通过命令行创建AVD
  • 查看可创建的AVD列表

android list targets

  显示可能如下:


AVD列表
  • 创建一个AVD,name 为给AVD取的名称,id 为上一步查询到的AVDID。例如AVD名称是"Nexus10",AVDID是"6"或"Google Inc.:Google APIs:21"。

android create avd -n name -t id
例如:android create avd -n "android5" -t 6

1.2 通过AVD Manager创建AVD
  • 通过执行如下命令,打开AVD Manager界面:

android avd

打开AVD Manager
  • 点击Create,填写信息后,点击OK保存即可,注意TargetCPU/ABI,可以使用Android SDK Manager下载对应版本的Android API,本文使用的是API 21

    创建AVD

  • 创建完成之后会显示在设备列表页


    创建完成
1.3 启动AVD

  除了从AVD Manager界面查看创建的AVD设备列表,还可以通过命令行执行android list avd来查看当前系统创建AVD设备列表。

命令行查看AVD列表

  可以在AVD Manager界面,选中创建的AVD设备,点击Start-Launch启动。

  可以通过命令行执行如下命令启动一个已经创建的AVD设备:

emulator -avd name
备注:name即前面创建的AVD设备名称,例如emulator -avd android5

  启动成功后页面如下:


AVD启动成功

  备注:打开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/

下载页面

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


MuMu模拟器启动

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

adb查询到模拟设备

四、结语

  至此,在macOS系统下安装Appium环境搭建完成,下一步就是编写自动化测试用例去操作手机或者模拟器。

  总结一下需要如何将Appium环境运行起来:

    1. 启动Appium服务器,使用appium命令,请参考第2部分的章节4
    1. 启动模拟器或连接真实手机,如何使用模拟器请参考本文第3部分
    1. 使用Appium客户端编写测试脚本,如何基于python编写第一个自动化测试用例,可以参考文章第一个Appium自动化测试用例
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容