1、Appium && Macaca对比
1.1、周边工具支持
相对Appium,Macaca提供了更加全面的周边工具支持,这其中包含可持续集成平台Reliable,元素查找工具app-inspector,脚本录制工具UI-Recorder等。
Reliable持续集成平台可以帮助我们进行用例的管理以及任务的调度,对于UI自动化,只有当他成为一种规范化的程式定期的触发与执行,这样才能发挥他的作用,因此,一个持续集成系统对于自动化的长期发展是必不可少的,而Appium并没有提供这套系统,这意味着我们需要从无到有的搭建自己的一套持续集成环境,这个投入无疑也是巨大的。
app-inspector 元素查找工具,极大的方便了控件的查找以及定位。
UI-Recorder脚本录制工具可以快速的通过录制得到脚本,方便新手入门。
具体的使用可以参考官方网站,都有详细的介绍。
1.2、轻量
从功能上来讲,Appium较Macaca是有优势的,Appium已经发展了多年,积累了很多经验,但是也造成了一些尾大不掉的毛病。以对安卓API版本的支持为例,Appium支持所有的安卓API版本,而Macaca只支持API>17(相当于Android4.2系统)的版本,这个跟两者的底层原理有关,Macaca对于安卓的支持是基于安卓sdk的UIAutomator框架,而这个框架是从API 17开始支持的,Appium从最早的安卓开始,对于API 17以上的版本,Appium与Macaca一样是基于UIAutomator的,对于API 17以下的版本,Appium则基于老的instrument,对于这部分的支持,还引入了Selendroid。但是从应用的角度讲,Android7已经发行,4.2系统以下的设备占比不大,我们不希望为了支持这部分少量的机型而增加自己在自动化上的工作量。简单来讲,大而全的并不一定是最好的,关键是找到适合自己的。
1.3、社区活跃,中文文档丰富
Macaca是由阿里集团开源的框架,官方网站提供了中文版以及英文版双语文档,虽然对于开发者而言,阅读英文文档的能力是必须的,但是中文文档的提供无疑能帮助很多基础相对薄弱的同学快速入门。此外,Macaca团队还提供了用于技术交流的微信群以及钉钉群,当遇到问题的时候可以方便的联系到主创团队的相关同学,这无疑也能给大家带来很大的方便。
1.4、平台更丰富
虽然Macaca和Appium同时都支持PC与移动端,但是Macaca新增了对于Electron应用的支持,这个是其他框架都不具备的,虽然作为一个Node.js小白我没有接触过相关的应用,但是相信对Electron的开发者以及测试同学来说,这是一个不错的选择。
1.5、API的统一性
研究过Appium的官方API,以java-client为例,针对iOS和安卓,控件以及Driver等类别都根据平台不同而不一样,对于控件,有AndroidElement,IOSElement,对于Driver,有AndroidDriver,IOSDriver,如果我们的用例要支持多平台,就需要处理多种平台不一致性,但Macaca从底层上就没有区分iOS与安卓,基本上除了各自系统特有的几个API以外都可以通过一个统一的API支持,这就方便了很多。
2、环境搭建
2.1、公共部分
2.1.1、安装homebrew
(https://brew.sh/?spm=a2c4e.11153940.blogcont178872.16.3a1b3a20JasmKw)
命令行中输入:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2.1.2、安装node.js
命令行中输入:
brew install node 安装node
brew update node 如果之前已安装成功,需要更新的话,更新node
node -v 安装完成后,检查是否安装成功
2.1.3、安装cnpm
npm是node.js的包管理工具,可以用他来安装和更新各种node的package,npm的下载速度比较慢,可以使用阿里巴巴提供的cnpm,加快了包的下载速度
命令行中输入:
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm -v 检查cnpm是否安装成功
如果安装过程中提示permission权限相关错误,可以尝试$sudo chown -R $USER/usr/local
2.1.4、安装chrome
去中文官网下载,安装,设置成为默认浏览器
2.2、Android环境
2.2.1、安装JDK【支持JDK1.8及以上】
JDK的下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载后直接安装
2.2.2、安装android studio(暂时可以跳过,不用安装)
安装完成后,不要安装任何插件。
2.2.3、安装SDK
下载完成直接解压,免安装
下载地址:https://pan.baidu.com/s/1y0yG0cd1LLDlVVfxlQSKvw 提取码: 8njt
2.2.4、安装gradle
gradle需要手动安装,命令安装容易报错。版本不能选择最新的,否则报错无解。
下载:gradle-4.1-all.zip,直接解压,免安装
下载地址:http://services.gradle.org/distributions/
2.2.5、设置JDK,SDK,GRADLE环境变量
unix:bin bin$ cd ~ #进入到 ~ 目录,必须要在这个目录下
unix:~ bin$ touch .bash_profile #如果.bash_profile不存在则创建这个文件
unix:~ bin$ vim .bash_profile #使用vi编辑器编辑 .bash_profile文件
然后输入 i ,在vi编辑器里面输入 i 的意思是开始编辑。
vi编辑器里面的内容如下:
#路径参考自己的电脑
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home
export ANDROID_HOME=/Users/mac/develop/androidSDK
export GRADLE_HOME=/Users/mac/develop/gradle-4.1
export PATH=${PATH}:${ANDROID_HOME}/tools
export PATH=${PATH}:${ANDROID_HOME}/platform-tools
export PATH=$PATH:$GRADLE_HOME/bin
完成后,保存.bash_profile
最后生效环境变量
source .bash_profile
2.2.6、试验 macaca android环境
cnpm i macaca-android -g #安装Android驱动
cnpm i macaca-ios -g #顺带安装上iOS驱动
cnpm i macaca-chrome -g #顺带安装上Chrome驱动
cnpm i macaca-electron -g #安装测试驱动模块
cnpm i app-inspector -g #安装元素查看器
cnpm i -g macaca-cli #安装macaca
macaca doctor #检查是否安装成功
以下说明,android环境完成了。
执行命令:
adb devices #获取android手机的device,需要打开发开者调试模式
app-inspector -u 手机的devices --verbose
自动跳转到页面,说明安装成功。
2.3 、安装IOS环境
如果出现如下错误:
如果提示:Permission denied
试着切换到root用户,执行chmod + x /usr/local
然后再切换到普通用户,su - 用户名
再次执行命令,然后还是报错。
输入 brew link carthage ,报错如下
这时候用下面的命令,问题解决:
brew uninstall carthage
brew update
brew upgrade
brew cleanup
brew install carthage
sudo chown -R $(whoami) /usr/local
brew link --overwrite carthage
brew install carthage
2.3.1、app store下载Xcode9.3以上版本
2.3.2、 安装xcode Command Line Tools
打开Xcode,启动终端,输入:
xcode-select-install
2.3.3、 安装usbmuxd
以便于通过usb通道测试ios真机
brew install usbmuxd
2.3.4、安装ios-webkit-debug-proxy
以便于测试app中的webview
brew install ios-webkit-debug-proxy
2.3.5、安装carthage
用来构建macacaXCTesyWD
brew install carthage
2.3.6、安装ideviceinstaller、ios-deploy
用来给真机安装App
brew install ideviceinstaller
brew install ios-deploy
2.3.7、安装IOS app-inspector
手机连上itunes,获取udid=***************************
2.3.8、调试IOS真机
找到app-inspector的安装目录,我的是/usr/local/lib/node_modules/app-inspector/node_modules/xctestwd/XCTestWD。
执行open XCTestWD.xcodeproj命令
添加开发这账号,并修改Bundle Identifier,共6个地方,如下
修改完成后,选择你的真机,运行构建,如下
运行成功后,在手机上进行安装,如下
此时手机安装了一个APP。
拿到证书签名
执行命令:
DEVELOPMENT_TEAM_ID=R565DTM cnpm i app-inspector -g
安装完成后,重新修改上面的6项改动
然后执行命令:
app-inspector -u ************* --verbose(*是你的udid,通过iTunes获得),后自动打开chrome浏览器,记得提前安装好浏览器,并设置为默认浏览器。
如果想看到时时的日志,所以在上面命令后面加上--verbose
命令执行后,在手机点击信任,解锁。
如果发生报错如下,重启终端:
出现下面的界面,表示成功。