Macaca介绍
Macaca的基本组成
通过对源码各个模块的分析,可以帮助我们对Macaca的整体构成有一个基础的认识。Macaca已经开源,相关的源码在对应的github上都可以下载。
structure模块拆分讲解:
Macaca
1. macaca-cli
Macaca提供的命令行工具
$macaca server
启动server
$macaca server --verbose
启动server并打印详细日志
$macaca doctor
检验当前macaca环境配置
2. app-inspector
macaca提供的元素查找工具,可以将app视图的结构以布局结构树的格式在浏览器上展示出来,用过点击某个元素,就可以方便的查询到该控件的基本信息,以方便查找。具体使用可参考官网: https://macacajs.com/inspector
3. UI Recorder
macaca提供的脚本录制工具,可以通过录制获得脚本,对于入门同学很有帮助。https://macacajs.com/recorder
WebDriver-Server
Macaca是按照经典的Server-Client设计模式进行设计的,也就是我们常说的C/S架构。WebDriver-server部分便充当了server这部分的角色,他的职责就是等待client发送请求并做出响应。
WebDriver-Client
client端简单来讲就是我们的测试代码,我们测试代码中的一些行为,比如控件查找、点击等,这些行为以http请求的方式发送给server,server接收请求,并执行相应操作,并在response中返回执行状态、返回值等信息。
也正是基于这种经典的C/S架构,所以client端具有跨语言的特点,macaca-wd,wd.java,wd.py分别是Macaca团队针对Js Java 以及Python的封装,只要能保证client端按照指定的要求发送Http请求,任意语言都可以。
DriverList
自动化要在不同的平台上跑,需要有对应平台的驱动,这部分驱动接收到来自server的操作命令,驱动各自平台的底层完成对应的操作。
1. Android
Macaca针对安卓平台的驱动集合
- macaca-android 安卓驱动
- macaca-adb 封装了安卓的adb命令,来实现一些adb的操作,比如安装、卸载、启动app、获取设备列表这些操作
- android-unicode 经过封装后的输入法,解决中文输入的问题
- uiautomator-client 将来自server的操作指令转换为UIAutomator可以识别的指令,驱动uiautomator完成对应的操作
- android-performance 用于自动化测试安卓性能相关的支持
2. iOS
Macaca针对iOS平台的驱动集合
- macaca-ios iOS驱动
- xctest-client 同安卓的uiautomator-client异曲同工,对XCUITest的封装,将来自server的操作指令转换为XCUITest可以识别的指令,驱动XCUITest完成对应的操作
- ios-simulator 用于对ios模拟器的支持,可以通过模拟器运行用例
- remote-debug 用于远程调试
3. Hybrid
Macaca针对Hybrid的驱动集合。
- macaca-chrome web测试驱动
- macaca-chromedriver 驱动chrome浏览器
- ios-webkit-debug-proxy 适用于iOS平台对webview的调试
4. Electron
Macaca针对pc端网页应用的支持
- macaca-electron
Macaca执行流程图
了解了Macaca的组成模块以及他们各自的作用,下面我们看一下各个模块是如何组装起来实现自动化测试流程的,宝宝同样费了很大劲画了一张图如下:
flow小结
如上简单总结了Macaca的基础原理,提供一个小窍门是大家可以对照控制台输出与文章中的流程图一一对应,这样就能大体了解整个流程的数据流向,从而就能参透Macaca的基础原理了。
Macaca介绍
环境配置
安装 Node.js
请安装 Node.js v8.0 或者更高版本,装好 Node.js
后命令行里就已经集成了 npm
工具,为了提高安装模块的速度,请使用国内的 cnpm
(淘宝源)。
Android 环境
-
安装
JDK
,要求 1.8 (不支持Java 9) -
配置
JAVA_HOME
-
安装
Gradle
安装包并且设置对应的环境变量 -
安装 18-25 版本中的任一
SDK
和Android Support Repository
,并配置ANDROID_HOME
iOS 环境
-
安装 Xcode9 或者更高版本
-
安装 usbmuxd 以便于通过 USB 通道测试 iOS 真机,不需要测试真机则不用安装
Macaca环境安装
1、安装Node.js。
2、安装Node.js完成。 首先切换切换淘宝源,因为国外资源访问很慢,而且有些资源还无法下载。
- npm install -g cnpm --registry=https://registry.npm.taobao.org
3、通过淘宝源安装 macaca-cli
- cnpm i macaca-cli -g
4、安装webdriver-client
- cnpm install webdriver-client
5、安装macaca-electron
- cnpm install macaca-electron -g
macaca-electron是基于Electron开发的Macaca驱动,是Macaca驱动之一。
6、安装macaca-chrome
- cnpm install macaca-chrome -g
7、安装Macaca Python Client,支持pip安装。
- python3 -m pip install wd
8、安装macaca-chromedriver
- cnpm install macaca-chromedriver -g
9、安装macaca-android(可选,当前只测试web)
- cnpm install macaca-android -g
10、安装macaca-ios(可选,当前只测试web)
- cnpm i macaca-ios -g
注意事项
1、npm方式安装慢的问题
- npm install -g cnpm --registry=http://r.cnpmjs.org
(或用淘宝镜像:registry = https://registry.npm.taobao.org) - 或者先安装cnpm,再用cnpm代替npm命令 (安装cnpm方式,请参照上述)
2、切换源方式
按快捷键【Win+X】 --> 选择“提示命令符(管理员)A”,打开超级管理员权限的cmd命令窗口
输入命令“npm config set registry https://registry.npm.taobao.orgnpm”回车,即可跟换源
输入命令“ config get registry ”回车可以查看更换是否成功
3、安装chromedriver超时失败
- npm install -g chromedriver -- chromedriver_cdnurl=http://chromedriver.storage.googleapis.com
- 或者 npm install -g chromedriver --chromedriver_cdnurl=http://npm.taobao.org/mirrors/chromedriver
Macaca使用
检查当前 Macaca 的安装环境
#我本机的依赖情况
λ macaca doctor
macaca-doctor version: 2.0.15
Node.js checklist:
node env: C:\Program Files\nodejs\node.exe
node version: v8.11.0
Android checklist:
JAVA version is `1.8`
JAVA_HOME is set to `C:\Program Files (x86)\Java\jdk1.8.0_144`
ANDROID_HOME is not set
GRADLE_HOME is not set
Installed driver list:
chrome: 1.0.7
electron: 2.0.4
只启动服务器
# 普通用法,添加了 --verbose 可以看到详细的信息
$ macaca server --verbose
# 设置端口号
$ macaca server -p 3456
启动Macaca服务
* macaca server (正常模式)
* macaca server -p 3456 (设置端口)
* macaca server -p 3456 & (设置端口后台运行)
* macaca server --verbose(输出详细日志)
更多的选项
$ macaca -h
# 服务器相关选项
$ macaca server -h
# 如何执行用例的选项
$ macaca run -h
* macaca -h
* macaca server -h
* macaca run -h
* macaca doctor -h
测试
- macaca run (运行当前目录用例集)
- macaca run -d ./test (运行指定目录下用例集)
7、部署webdriver服务
7.1、命令窗口输入:npm run installdriver
7.2、命令窗口输入:npm run server
网友评论