第一,Appium 介绍

Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用。所谓的 “混合应用” 是指原生代码封装网页视图——原生代码和 web 内容交互。
重要的是,Appium 是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套 API 来写自动化测试脚本,这样大大增加了 iOS 和 Android 测试套件间代码的复用性。

Appium 无需重新编译或修改你的应用,同时,它还不局限于某种编程语言或者框架来编写和运行你的测试脚本,不得不说出 Appium 是一款非常优秀的测试工具。
在安装 Appium 过程中,新手可能会遇到一些麻烦和遭遇学习动力上打击,尽管如此,我们社区对 Appium 测试框架的讨论、学习热情丝毫不减,一片如火如荼的场景。下面就 Ubuntu(14.04 LTS) 系统安装 Appium 框架展开学习及给出在安装过程中遇到的错误问题的解决方法。
第二,安装环境依赖准备

注意,由于在安装 Appium 文档中,官方特别指出最好不要使用sudo命令安装nodenpm软件,否则后面安装 appium 会遇到麻烦,鉴于此,这里我们使用已编译好的 nodejs 版本省去了源码本地编译操作,根据自己机器型号下载对应版本,下载错了,安装时会出问题的。下载地址二进制 nodejs 版本下载

第三,安装 nodejs
1,将从上面链接中获取的二进制 nodejs 版本压缩包解压到某一目录下,之后把解压包中bin目录添加到PATH环境变量中。
测试 nodejs 是否配置成功,如下命令:

$ node -v
 v5.6.0
$ npm -v
 3.6.0

如果显示以上输出,则 nodejs 安装成功。
2,安装 appium
执行命令:

$ npm install -g appium

第四,安装 Android SDK
1,将 Android SDK 压缩包解压到某一目录下,配置ANDROID_HOMEPATH环境变量。如下,
在.bashrc 文件中添加两行代码:

ANDROID_HOME=your_android_sdk_path/sdk
PATH=$PATH:$ANDROID_HOME/tools/:$ANDROID_HOME/platform-tools
注意,即便已在.bashrc文件中设置好了 ANDROID_HOME 环境变量,在启动appium-doc --android之前,也必须在 shell 会话里重新执行设置ANDROID_HOME变量:

$ export ANDROID_HOME="your_android_sdk_path/sdk"

2,添加 SDK 软件包
终端执行命令:

$ android

需要等待几分钟安装 SDK 软件包,安装完成后验证 ANDROID 环境是否搭建成功。在终端执行:

$ export ANDROID_HOME="your_android_sdk_path/sdk"
$ appium-doctor --android --verbose

若有以下输出,则 Android 配置成功:

第五,安装 Appium Python Client

$ pip install Appium-Python-Client

第六,启动 Appium
还是少不了 shell 中设定ANDROID_HOME环境变量

$ export ANDROID_HOME="your_android_sdk_path/sdk"
$ appium

输出如下,则启动正常

第七,创建 Android 模拟器
1,列出所有可用的 Android 系统镜像文件,执行:

$ android list targets

我机子上安装了 20 多个 android 系统镜像文件,这里选择Android 5.1.1版本。

2,创建 android 模拟器,执行:

$ android create avd -n emulator-22 -t 10 --abi default/x86

上面命令参数n指定模拟器的名称,参数t指定所使用系统镜像id编号,即命令android list targets列出的可用镜像文件 id 编号,具体值为上图id的值。
3,启动 android 模拟器
上面命令执行无误后,开启刚创建 android 模拟器,执行:

$ emulator -avd emulator-22

avd参数指定需要开启的模拟器名称,即为我们创建模拟器时使用参数n指定的名称。
第八,使用 Python 运行 appium 测试样例
Github 上官方测试样例代码,下载

1,以 android_simple.py 文件为例子,使用 Appium Python 语言客户端对 android 应用测试。打开 android_simple.py,修改 setUp 方法:

def setUp(self):
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '4.2'
        desired_caps['deviceName'] = 'Android Emulator'
        desired_caps['app'] = PATH(
            '../../../sample-code/apps/ApiDemos/bin/ApiDemos-debug.apk'
        )

其中desired_caps['platformVersion']值设定为我们创建模拟器时所使用的 android 对应版本。由于这里我们前面创建的模拟器为android-22,故,4.2修改为5.1.1。同样,desired_caps['deviceName']设备名称修改为emulator-22,即为我们前面创建模拟器指定的名称。最终setUp方法为:

def setUp(self):
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '5.1.1'
        desired_caps['deviceName'] = 'emulator-22'
        desired_caps['app'] = PATH(
            '../../../sample-code/apps/ApiDemos/bin/ApiDemos-debug.apk'
        )

2,开启测试

$ py.test android_simple.py


3,测试完成结束模拟器

$ adb emu kill

第九,遇到的问题及解决方法
1,在终端里设置ANDROID_HOME环境变量,

$ export ANDROID_HOME="your_android_sdk_path/sdk"

在前文中多次提到,很重要。如果缺少,则会在运行

$ appium-doctor --android --verbose

报错:ANDROID_HOME is not set
2,创建 android 模拟器中时会提示虚拟机加速问题,需要安装 KVM
2-1,安装 kvm

$ sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

2-2,
添加用户到 kvm 和 libvirtd 组

$ sudo adduser `id -un` kvm
$ sudo adduser `id -un` libvirtd

2-3,验证用户添加到组是否成功
执行:

$ groups

输出

r00t adm cdrom sudo dip plugdev lpadmin sambashare kvm libvirtd

以上输出表明用户已添加到kvm and libvirtd
2-4,验证 kvm 安装是否成功

$ virsh -c qemu:///system list

输出:

     Id    名称                         状态
----------------------------------------------------

表示 KVM 安装成功。
2-5,KVM 安装成功后机器可能还不能使用,最好可能需要进入 bios 中设置下。具体:进入 Bios 修改Configure选项卡下的SVMEnable,这样机器就支持虚拟机加速了。
第十,总结
正如 Appium 所倡导的哲学一样,它不局限于某种语言或者框架来编写和运行测试脚本,对同一个测试我们可以使用不同的编程语言,而且 Appium 支持的语言有很多,如 Python、Java、Php、Ruby 等。Appium 自诞生已有 3 年历史,社区讨论氛围很火,相信以后 Appium 受众应该会越来越来多,Appium 越来越强大。
第一次安装 Appium 时是使用源码的方式,多次尝试没有成功,可能是由于 npm、node 安装存在问题,换成使用 nodejs 二进制版本顺利安装成功了。遇到异常使用 google 或者百度搜索都可以找到解决方法,除非碰到的问题太奇葩了。
刚接触学习 Appium 测试框架,写得不到的地方,欢迎各位大大批正。
附相关资源:
1,Android AVD 命令
http://developer.android.com/intl/zh-cn/tools/help/android.html
http://developer.android.com/intl/zh-cn/tools/help/adb.html
2,Android 模拟器命令
http://developer.android.com/intl/zh-cn/tools/devices/emulator.html
3,安装 KVM 相关
https://help.ubuntu.com/community/KVM/Installation


↙↙↙阅读原文可查看相关链接,并与作者交流