Appium是一个自动化测试开源工具,支持iOS平台和Android平台上的原生应用,web应用和混合应用。Appium是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性。
1. 移动原生应用:用iOS或者Android SDK写的应用。
2. 移动web应用:使用移动浏览器访问的应用(Appium支持iOS上的Safari和Android上的Chrome)。
3. 混合应用:指原生代码封装网页视图,原生代码和web内容交互。
Appium 的理念
- 无须为了自动化而重新编译或修改测试APP
- 不让移动端自动化测试限定在某种语言和某个具体的框架,任何人都可以使用自己最熟悉的最顺手的语言及框架来做移动端自动化测试
- 无须为了移动端自动化测试而重新发明轮子,即重新写一套API,webdriver协议里的api已经够好,可以拿来改进使用
- 移动端自动化测试是开源的
Appium 设计思想
1. 无须为了自动化而重新编译或修改测试APP
为了满足Appium理念的第一条,Appium真正的工作引擎其实是第三方自动化框架。因此,不需在APP中植入Appium相关或者第三方的代码,即测试使用的应用与最终发布的应用并无区别。 使用的第三方框架:
- iOS:苹果的 UIAutomation
- Android 4.2+:Google's UIAutomator
- Android 2.3+:Google’s Instrumentation(Instrumentation由单独的项目Selendroid提供支持)
2. 不让移动端自动化测试限定在某种语言和某个具体框架中
为了满足Appium理念的第二条,Appium选择了client-server的设计模式。只要Client能够发送HTTP请求给Server,那么Client使用什么语言来实现都是可以的,Appium把第三方框架封装成一套API,指定客户端到服务器端的协议。目前已经实现了大多数流行语言版本的客户端,可是使用任何测试套件或者测试框架。
3. 不发明新的API
Appium扩展了webdriver的协议,没有自己重新去实现一套,好处是以前的webdriver api能够直接被继承过来,以前的webdriver各种语言的binding都可以拿来就用,省去为每种语言开发一个client的工作量。
4. 开源
这个不多说了
Appium 概念
C/S架构
Appium的核心是一个web服务器,它提供了一套REST的接口。并监听一个端口,接收由Client发送来的Command;翻译这些Command,把这些Command转成设备可以理解的形式发送给移动设备;移动设备执行完这些Command后把执行结果返回给Server;Server再把执行结果返回给Client。
这里的Client其实就是发起Command的设备,也就是执行Appium测试代码的机器。也可以吧Client理解成是代码,这些代码可以是java/ruby/python/js,只要实现了webdriver标准协议就可以。
Session
在webdriver/appium中,所有的工作都是在session start后才可以进行,即通过POST/session这个URL,然后传入 Desired Capabilities就可以开启session。
开启session后,返回一个全局唯一session id,以后几乎所有请求都必须带上这个session id,它代表你所打开的浏览器或者移动设备的模拟器。
Desired Capabilities
Desired Capabilities携带了一些配置信息。形式是key-value,实际上Desired Capabilities在传输时就是json对象。他的作用是告诉Server本次测试的上下文,例如,是测试ios还是android,具体测哪一个app。
Appium Server
在命令行用appium命令打开的东西。
Appium Clients
Appium官方提供一套appium client,涵盖多种语言,测试时,只用这些client库替代原生webdriver库,原生webdriver api是为web设计的,client库是对原生webdriver进行的移动端扩展,加入一些方便的方法,比如swipe等。
Appium+Mac环境搭建
Appium安装方式主要有两种:
(1)自己安装配置nodejs的环境,通过npm进行appium的安装
(2)直接下载官网提供的dmg安装,dmg里面已经有nodejs环境和appium的可执行文件了
本文主要讲解直接使用dmg的安装方法,并在其过程中遇到的问题,想要了解第一种方法可见我的参考资料中的文章。
1. Java
java -version
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
2. git
git --version
git version 2.11.0 (Apple Git-81)
3. brew
brew -v
Homebrew 1.2.3
Homebrew/homebrew-core (git revision 7a8bf; last commit 2017-06-14)
4. node
brew install node
5. Android SDK
三种方式,关系到Android-SDK的路径,也关系到环境变量的配置
- 从官网上下载的SDK,并通过拖拽图标到Application文件夹中:
SDK路径:/Applications/ADT/sdk
- 使用Homebrew下载:
SDK路径:/usr/local/Cellar/android-sdk/{YOUR_SDK_VERSION_NUMBER}
- 安装Android Studio时自动下载SDK:
SDK路径:/Users/{YOUR_USER_NAME}/Library/Android/sdk
6. 设置环境变量
- 找到
~/.bash_profile
(桌面空白位置使用快捷键shift+comd+G或终端命令行定位) - 找到.bash_profile 文件,若没找到,则先创建,创建命令如下:
touch .bash_profile
- 进行修改:
vim .bash_profile
export JAVA_HOME=$(/usr/libexec/java_home)
export ANDROID_HOME=[YOUR_ANDROID_SDK_PATH]
- 生效:
source ~/.bash_profile
7. 下载Appium的dmg安装包
Appium的dmg安装包的下载地址是:https://github.com/appium/appium-desktop/releases/tag/v1.6.2
8. 验证Appium是否安装成功
从Launcher中打开Appium,点击右边第二个图标进行安装检测
参考资料
Appium API文档
Appium简明教程
Appium的安装-Mac平台
Mac上安装Appium详细步骤
Appium for Mac环境准备篇
Appium Girls 学习指南