找回密码
 我要加入

QQ登录

只需一步,快速开始

新理念测试 首页 测试文章 移动测试 查看内容

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空间
收藏
来自: 网易