【前言】

作为小白,之前安装 Appium1.5.3 版本,但因为升级到 xcode8 之后,原来的 iOS UI 自动化框架被彻底移除了,采用了 Xc-UItest 方案,Appium 从 1.6.0 开始更好的支持这个方案,所以需要升级 Appium 至 1.6 以上版本。作为小白,比之前搭建 Appium1.5.3 踩得坑多,记录下操作过程,希望给后续同学操作过程中提供有效参考。

Appium 使用的模块是 Appium-Xc-UItest-Driver,其中引用的 Facebook 提供的 WDA 方案来驱动 iOS 的测试,WDA 编译应用在真机中必须配置 development team 和 provisioning profile,官方给出了两种方式。

【现在开始操作】

Appium1.6.6 版本,参考站内大神(https://testerhome.com/topics/6962)安装教程贴,多次失败:
执行至 npm 安装时报错

SiyudeMacBook-Pro ~$ cnpm install -g appium@1.6.3

报错见下:

node-pre-gyp ERR! Tried to download(404): https://npm.taobao.org/mirrors/fsevents/v1.1.1/fse-v1.1.1-node-v57-darwin-x64.tar.gz 
node-pre-gyp ERR! Pre-built binaries not found for fsevents@1.1.1 and node@8.0.0 (node-v57 ABI) (falling back to source compile with node-gyp) 

后续补充:如上的问题,百度到一个解决方法,希望给后续同学操作过程中提供有效参考
问题:

npm ERR! tar.unpack untar error /tmp/npm-5884-e9fda1ac/registry.npmjs.org/npm/-/npm-2.1.3.tgz

在 StackOverflow 上找到了解决方案 1:运行命令:

$ npm cache clean

方案 2:

npm install --python=python2.7
npm config set python python2.7

1.环境配置
a.安装 homebrew,建议 ***

SiyudeMacBook-Pro ~$ ruby -e "$(curl --insecure -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

b.安装成功后,使用 brew 命令安装 git。git 是一种版本管理方式,常用命令和概念,请自行百度

SiyudeMacBook-Pro ~$ brew install git

c.使用 brew 安装 node 和 npm(node 和 npm 部分,如果不了解 请自行百度 http://www.jianshu.com/p/c4b3c8b435ab

SiyudeMacBook-Pro ~$ brew install node

d.由于新版的 node 已经集成了 npm,所以 node 安装成功时 npm 也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装.

安装完 node 以后最好安装一个 cnpm,cnpm 是淘宝用来替代 npm 的一个国内镜像工具,执行下面的命令即可:

SiyudeMacBook-Pro ~$ npm install -g cnpm --registry=https://registry.npm.taobao.org

如果有条件,建议还是,淘宝镜像有时会判断 服务器证书异常,无法正常下载

2.安装 appium 之前一定要把以前的历史版本卸载,否则会出一些这样那怎样的问题

SiyudeMacBook-Pro ~$ npm uninstall -g appium
removed 1 package in 0.06s

3.新建一个工程文件夹,用于放 从 github 上下载 appium 的源码(https://codeload.github.com/appium/appium/zip/v1.6.6

SiyudeMacBook-Pro ~$ cd <工程文件夹地址>
SiyudeMBP code_learn$ cd Appium
SiyudeMBP Appium$ git clone https://github.com/appium/appium.git

网络正常情况下,大概 2 分钟后,源代码下载完毕

4.进入子目录 appium,使用 npm 安装 appium

SiyudeMBP Appium$ cd appium
SiyudeMBP appium$ npm install

5.安装之后要与系统进行关联,执行如下命令 npm link(关于 npm link 的用法 http://www.runoob.com/nodejs/nodejs-npm.html

SiyudeMBP appium$ npm link

自己执行结果见下:

SiyudeMBP appium$ npm install
✔ Installed 41 packages
✔ Linked 0 latest versions
✔ Run 0 scripts
[21:56:16] Using gulpfile ~/Documents/user/code_learn/Appium/appium/gulpfile.js
[21:56:16] Starting 'prepublish'...
[21:56:16] Starting 'clean'...
[21:56:16] Finished 'clean' after 29 ms
[21:56:16] Starting 'transpile'...
[21:56:18] Finished 'transpile' after 1.93 s
[21:56:18] Starting 'fixShrinkwrap'...
Could not find shrinkwrap; skipping fixing shrinkwrap. (Original error: Cannot find module './npm-shrinkwrap.json')
✔ All packages installed (used 4s, speed 0B/s, json 0(0B), tarball 0B)

SiyudeMBP appium$ npm link

> appium@1.6.6-beta prepublish /Users/liruiyi/Documents/user/code_learn/Appium/appium
> gulp prepublish

[21:56:39] Using gulpfile ~/Documents/user/code_learn/Appium/appium/gulpfile.js
[21:56:39] Starting 'prepublish'...
[21:56:39] Starting 'clean'...
[21:56:39] Finished 'clean' after 31 ms
[21:56:39] Starting 'transpile'...
[21:56:41] Finished 'transpile' after 1.83 s
[21:56:41] Starting 'fixShrinkwrap'...
Could not find shrinkwrap; skipping fixing shrinkwrap. (Original error: Cannot find module './npm-shrinkwrap.json')
/usr/local/Cellar/node/5.10.1/bin/appium -> /usr/local/Cellar/node/5.10.1/lib/node_modules/appium/build/lib/main.js
/usr/local/Cellar/node/5.10.1/lib/node_modules/appium -> /Users/liruiyi/Documents/user/code_learn/Appium/appium
SiyudeMBP appium$ appium -v
-bash: appium: command not found

其中出现报错

npm ERR! tar.unpack unzip error /tmp/npm-13151-f8dec02d/registry.npmjs.org/appium-adb/-/appium-adb-2.6.17.tgz
⸨ ░░░░░░░░░░░░░░░⸩ ⠼ cloneCurrentTree: ERR! tar.unpack unzip error /tmp/npm-13151-f8dec02d/registry.npmjs.org/appium-adb/-/appium-adb-2.6.17.tgz
 Could not find shrinkwrap; skipping fixing shrinkwrap. (Original error: Cannot find module './npm-shrinkwrap.json')
✔ All packages installed (used 4s, speed 0B/s, json 0(0B), tarball 0B)

一般出现报错,先想下是否权限问题,使用 sudo(inux 系统管理指令,是允许系统管理员让普通用户执行一些或者全部的 root 命令的一个工具)获得管理权限

SiyudeMBP appium$ sudo npm link

也有其他同学推荐其他方法
SiyudeMBP appium$ sudo npm install --unsafe-perm=true

获得结果,可忽略警告 warn

SiyudeMBP appium$ sudo npm link
npm WARN prepublish-on-install As of npm@5, `prepublish` scripts will run only for `npm publish`.
npm WARN prepublish-on-install (In npm@4 and previous versions, it also runs for `npm install`.)
npm WARN prepublish-on-install See the deprecation note in `npm help scripts` for more information.
npm WARN lifecycle appium@1.6.6-beta~prepublish: cannot run in wd %s %s (wd=%s) appium@1.6.6-beta gulp prepublish /Users/liruiyi/Documents/user/code_learn/Appium/appium
up to date in 4.148s
/usr/local/bin/appium -> /usr/local/lib/node_modules/appium/build/lib/main.js
/usr/local/lib/node_modules/appium -> /Users/liruiyi/Documents/user/code_learn/Appium/appium

6.安装完成之后用如下命令验证是否安装成功 appium -v 注意:安装过程要从网络上下载很多依赖的程序,所以要保证网络畅通,最好是 *** 的,本人在安装过程中失败过多次。

SiyudeMBP appium$ appium -v
1.6.6-beta

关于 Appium 部分的详细介绍
Appium
appium 以 webdriver 框架为基础,有意向的同学可以关注下
webDriver


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