Appium:简介+环境搭建


Appium是一个自动化测试开源工具,支持iOS平台和Android平台上的原生应用,web应用和混合应用。Appium是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套API来写自动化测试脚本,这样大大增加了iOS和Android测试套件间代码的复用性。


1. 移动原生应用:用iOS或者Android SDK写的应用。
2. 移动web应用:使用移动浏览器访问的应用(Appium支持iOS上的Safari和Android上的Chrome)。
3. 混合应用:指原生代码封装网页视图,原生代码和web内容交互。

Appium 的理念

  1. 无须为了自动化而重新编译或修改测试APP
  2. 不让移动端自动化测试限定在某种语言和某个具体的框架,任何人都可以使用自己最熟悉的最顺手的语言及框架来做移动端自动化测试
  3. 无须为了移动端自动化测试而重新发明轮子,即重新写一套API,webdriver协议里的api已经够好,可以拿来改进使用
  4. 移动端自动化测试是开源的

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的路径,也关系到环境变量的配置

  1. 从官网上下载的SDK,并通过拖拽图标到Application文件夹中:
    SDK路径:/Applications/ADT/sdk
  2. 使用Homebrew下载:
    SDK路径:/usr/local/Cellar/android-sdk/{YOUR_SDK_VERSION_NUMBER}
  3. 安装Android Studio时自动下载SDK:
    SDK路径:/Users/{YOUR_USER_NAME}/Library/Android/sdk
6. 设置环境变量
  1. 找到 ~/.bash_profile(桌面空白位置使用快捷键shift+comd+G或终端命令行定位)
  2. 找到.bash_profile 文件,若没找到,则先创建,创建命令如下:
    touch .bash_profile
  3. 进行修改: vim .bash_profile
export JAVA_HOME=$(/usr/libexec/java_home)
export ANDROID_HOME=[YOUR_ANDROID_SDK_PATH]
  1. 生效: 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 学习指南

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

推荐阅读更多精彩内容