appium1.6.4 + Xcode7 + iOS 模拟器 环境搭建攻略 以及第一个例子

herosrx 2017-6-6 11:56

都说搞 appium + iOS 的人 80% 还没有被代码弄脏了手 就早早死在了环境上面但是—— 明(shi)知(shang)山(wu)有(nan)虎(shi) 我(zhi)们(yao)绕(ken)着(fang)走(qi)其实 搞 appium 环境最好从 A ...

都说搞 appium + iOS 的人 80% 还没有被代码弄脏了手 就早早死在了环境上面?
但是?——?
? ? ?明(shi)知(shang)山(wu)有(nan)虎(shi)?
? ? ?我(zhi)们(yao)绕(ken)着(fang)走(qi)?
其实 搞 appium 环境最好从 Android 开始 而搞 iOS 的环境最好从模拟器开始
别问怎么知道的 心累 。。。

1. node.js
从以下地址下载 一路傻瓜安装 而且不用配置环境变量?

https://nodejs.org/en/download/?

装完之后 会看到 npm 也同时搞定了

2. appium1.6.4

需要说一下的就是 1.6.4 这个版本 是通过命令行安装的 没有安装包 也没有 GUI
那之所以选择这个版本的原因 是因为要配合 Xcode 的版本
我司开发同学手里的源代码 要用 Xcode8 才可以编译?
而 1.5 版本的 appium 对 Xcode8 支持不是很好 这里面有一层这个关系 明白吧?
appium1.6.4 的安装最好用高一点的权限执行

sudo npm install -g appium

或者 先安装 cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
再用 cnpm?去安装 appium

cnpm install -g appium


那又有同学说了 1.6.4 版本就有带 GUI 的安装包呀 你怎么不用呢?
这个还真的不是没有用过 而是直接掉坑里了 你如果觉得能爬上来就用 这个没关系
appium1.6.4 GUI 的安装文件在这里

https://pan.baidu.com/s/1jIyXLQY

还有的同学可能会说 我就想用 1.5 版本 毕竟有 GUI 的话 看着会更直观一点
可以 那你就把 Xcode 版本降到 7 如果还有其它的坑 那就得自己简单爬一下了

3.?homebrew
安装命令是

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

这个命令很是贴心 它同时还会把 Command Line Tools for Xcode 一并搞定

4. carthage
安装命令是

brew install carthage

5. webpack
安装命令是

npm i -g webpack

在这一步遇到的坑 基本大部分都是权限问题?
如果看到 Permission 神马神马滴报错?你就 777 或者 sudo 明白吧?
反正务必要执行成功 不能有 error 啊 warn 神马滴
因为这个东西与 WebDriverAgent 相关 如果搞不定这个的话?
后面会被 WebDriverException 搞死 别问怎么知道的 心累 once again 。。。

6. 还有一个 WebDriverAgent 相关的依赖
这个里面要说一下的是 appium 从 1.6.x 版本开始 在控件定位策略上有了一个大的变化
就是它放弃了 uiautomation 同时启用了 xcuitest 机制?因此在安装的时候要多一个依赖
进入下面这个路径

cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/

创建一个路径

mkdir -p Resources/WebDriverAgent.bundle

执行一条命令

./Scripts/bootstrap.sh -d

这个命令的执行过程里面也会有坑 基本都是与前面那个 carthage 相关的

看下报错 小坑自己爬一爬 有半个小时应该能爬上来了

至此 Mac 上面的各项依赖安装完毕 现在可以不用深究这些具体都是什么鬼?
毕竟如果没有遇到问题的话 实在没有必要去制造问题 然后再花时间去解决它们

下面的工作是 在 Xcode8 里面去 build 一个 iOS 版本为 10 以上的设备的模拟器
毕竟 iOS 设备的版本已经更新到 10.3 了 较低版本的设备大概都已经很老了
至于 Xcode8 的安装包 如果你们公司里有 iOS 开发的话 直接求助他们就可以了
版本是 8 而不是 8.x (敲黑板) 别问怎么知道的 心累 twice again 。。。

另外要解释一个事情 就是 appium 运行虚拟机的时候 有一个 .app 文件就行了
专门发红包的微信群脚本里面也并没有出现过?Xcode 字样 它为什么要去匹配 ?Xcode 版本呢?
其实这个问题 确实只有在?appium 1.6.x 才会有?
因为 appium?它是借助 WebDriverAgent 去操作虚拟设备的
而 WebDriverAgent 需要借助 Xcode 来运行 这样子 这个关系就清楚了

准备工作做完之后 在终端里面运行诊断

appium-doctor

在这里面会遇到如下 6 个报错:

WARN AppiumDoctor ? ANDROID_HOME is NOT set!
WARN AppiumDoctor ? JAVA_HOME is NOT set!
WARN AppiumDoctor ? adb could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor ? android could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor ? emulator could not be found because ANDROID_HOME is NOT set!
WARN AppiumDoctor ? Bin directory for $JAVA_HOME is not set

下面这个攻略可以将这 6 个货一网打尽

http://www.jianshu.com/p/0932149baf24

这份攻略你搞的时候从下载 android sdk 开始 直到设置环境变量

然后再诊断 就没有这 6 个报错了

搞掉这 6 个鬼是为后面搞 Android 模拟器铺路的 现在用不到


在终端里面启动 appium server?

appium -a 127.0.0.1 -p 4723
[Appium] Welcome to Appium v1.6.4 (REV f45116a28a9a1e91e393c576bcb574f5fb737e5e)
[Appium] address: 127.0.0.1
[Appium] Appium REST http interface listener started on 127.0.0.1:4723

这样 server 就启动成功 并开始监听本机的 4723 端口

接下来在 IDE 里面运行专门发红包的微信群脚本 观察专门发红包的微信群结果


首先会遇到这个报错

Could not determine Xcode version:Could not get Xcode version.
/Library/Developer/Info.plist does not exist on disk.


为解决这个问题 执行以下命令

sudo xcode-select --switch /Applications/Xcode.app

然后重新运行 报错会变成

WebDriverException: Message: A new session could not be created.

Details: Appium's IosDriver does not support xcode version 8.0.

所以搞到这里 就知道已经掉进了一个无底深坑 —— 不要相信网上说的
appium1.5.x ---> Xcode7
appium1.6.x ---> Xcode8
至少现在已经亲眼看到 1.6 版本的 appium 也并不能支持到 Xcode8 (敲黑板)
如果降到 Xcode7 又会面临一个限制 就是它不能支持 iOS 版本高于 10 的设备?
别问怎么知道的 心累 3 times again 。。。

这里提供一个老司机给的终极版本:

“appium1.6.3 + iOS10.2 + Xcode8.2.1 +React Native 这个绝对是可以的

这个究竟好使不好使 得到自己机器上去试 他行你不一定行?

至此 本帖验证好使的版本为
macOS sierra 10.12.2
Xcode7.3.1?
appium1.6.4
可以操作的虚拟设备型号为 iPhone 6 系统版本为 9.3

在这套环境下 运行成功的具体例子可以参照以下攻略

http://blog.csdn.net/youxiansanren/article/details/46359273


appium1.6.4 + Xcode8 + iOS10 模拟器 环境搭建攻略 以及第一个例子 - Lucia - Lucias WorkShop


上图是在有 GUI 的 appium 上面取到的 在命令行环境上看不到这个图

而且元素定位的时候 出现了偏移量 所以脚本操作 app 的时候
单击了 “Test Gesture” 按钮 调起了里面的地图 就是下图这样
appium1.6.4 + Xcode7 + iOS 模拟器 环境搭建攻略 以及第一个例子 - Lucia - Lucias WorkShop
而例子里面的脚本 原本并不是打算点击这个按钮的 不过 who care?appium1.6.4 + Xcode7 + iOS 模拟器 环境搭建攻略 以及第一个例子 - Lucia - Lucias WorkShop
?
另外还遗留了一个传参的 bug 就是下面这样
appium1.6.4 + Xcode7 + iOS 模拟器 环境搭建攻略 以及第一个例子 - Lucia - Lucias WorkShop
?
当然这些问题并不是现阶段的重点 重点是用例子验证了环境可用
希望这个攻略可以在环境搭建方面 给大家提供一点点帮助?
最后感谢所有在这个过程中提供线索的同学 不挂名以免打扰到他们
分享至 : QQ空间
收藏
来自: 网易