MACACA自动化框架搭建
Posted dreamhighqiu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MACACA自动化框架搭建相关的知识,希望对你有一定的参考价值。
本文是基于Windows系统搭建macaca+python+android框架的过程和踩坑记录(Linux的以后再研究),有兴趣的同学可以一起交流学习一下
macaca简介:
https://macacajs.github.io/zh/environment-setup
macaca是由阿里巴巴公司开发的一套自动化解决方案,开源地址:https://github.com/macacajs/
其适用于PC端和移动端
基本环境:
- JDK的安装及环境配置;(1.8)
- Node.js的安装及环境配置;(8+)
- android SDK安装及环境配置;(25+)
- gradle安装及环境配置;
- python环境配置;
JDK的安装及环境配置
java环境配置就略过了,不过要声明一点就是:最好使用Java8
因为Java9以上更新了不少特性,会后续导致Android SDK的配置出现各种问题,这里不描述Android SDK安装出现的问题。
Node.js的安装及环境配置
macaca由Node.js开发,所以需要安装Node.js
- 直接到官网下载稳定版本的msi包安装(8以上版本)
坑:安装路径可以修改,但是保证一定不要有空格!
巨坑:对于已经安装过Node.js的,请检查一下路径是否存在空格(一般默认路径是C:\Program Files\nodejs,Program Files之间就存在空格)
安装完毕后可检查是否成功 - 配置Node.js
在安装的文件夹X:\xxx\nodejs下创建两个文件夹"node_global"及"node_cache"
配置npm安装的全局模块所在的路径,以及缓存cache的路径
npm config set prefix "X:\xxx\nodejs\node_global"
npm config set cache "X:\xxx\nodejs\node_cache"
可用如下命令检查是否成功:
npm config get prefixnpm config get cache
- 添加PATH环境变量
在【系统变量】下新建【NODE_PATH】,输入【X:\xxx\nodejs\node_global\node_modules】,
在【用户变量】下的【Path】修改npm的路径为【X:\xxx\nodejs\node_global】
android SDK安装及环境配置
- 到http://tools.android-studio.org/index.php/sdk下载sdk manager,安装
如果前面安装的是Java9以上,可能会出现无法定位JAVA_HOME,sdk manager一闪而过等情况 - 安装如下图工具:
备注:
a) Android SDK Build-tools一定要选择25.0.2版本,不然后续可能会出错
b) 原本要求是使用API25的,但是我后续安装时却提示要用API26 - 配置Android SDK环境变量
创建系统变量ANDROID_HOME,变量值:X:\xxx\sdk(以安装目录为准,确认里面有tools和add-ons等多个文件夹)
PATH变量值的最后追加 ;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\build-tools; - 在cmd输入adb,android检查配置是否正常
gradle安装及环境配置
- 到https://gradle.org/releases/选择最新版本,点complete
- 在系统变量中添加"GRADLE_HOME"变量 C:\Gradle\gradle-4.6 (你的gradle根目录)
在系统变量PATH中添加 %GRADLE_HOME%\bin;(你的gradle解压目录下的bin文件夹) -
cmd命令行窗口输入gradle -v,显示如下内容即可
python环境配置
python环境搭建略,macaca只支持Python3.4以上版本,本人使用的是python3.6
安装macaca相关
- macaca-cli 核心框架
(cmd要以管理员模式打开,不然权限不够安装)
安装命令:npm i macaca-cli -g 出现下图惊悚的猴子和成功提示就ok了 - 使用macaca doctor命令检查macaca环境
出现的全是绿色就ok
坑:
*执行macaca doctor 时提示 Not accepted Android SDK license agreements
创建一个.bat执行下列语句
mkdir "%ANDROID_HOME%/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "%ANDROID_HOME%/licenses/android-sdk-license" - 安装各种驱动(网上的教程基本都让换淘宝源,但是公司可以连外网,我实际使用时下载也不慢,所以可以直接npm)
npm i macaca-electron -g (macaca-electron是基于Electron开发的Macaca驱动,是Macaca驱动之一)
npm i macaca-chrome -g
npm i webdriver-client -g
npm i macaca-chromedriver -g
python -m pip install wd
- 安装Android驱动(坑基本都在这里)
npm i macaca-android -g
安装请确保安装日志都时成功的,有问题从日志上还是比较好定位解决的(毕竟肯定有我没踩到的坑)
安装成功后,请确保生成了两个apk文件,(我的路径是D:\nodejs\node_global\node_modules\macaca-android\node_modules\uiautomatorwd\app\build\outputs\apk)
只要生成了以上两个apk基本就没问题了
坑:
*安装macaca时出现如下错误(Android SDK Build-tools 25.0.2的没找到截图)
到Android SDK安装API26(安装Android SDK Build-tools 25.0.2) - 安装inspector
npm i app-inspector -g
这个工具是用于定位元素的(据说ios用不了),用Android SDK自带的uiautomatorviewer也可以定位(在sdk目录下的tools文件夹中)
使用方法:
a) 手机使用数据线连接电脑,打开USB调试,允许安装未知应用等一系列东西(最好设置成充电时不休眠)
b) 确保电脑已经安装上手机的驱动
c) adb devices -l 查看设备号
d) 启动inspector命令:app-inspector -u 设备号
e) 成功连接的话,手机会提示安装驱动模块,点击安装,成功后会自动打开页面
里面就可以定位元素信息了,设备界面变化可以通过刷新浏览器重新获取界面信息
坑:
*出现Command failed: /Users/**/sdk/platform-tools/adb -s ** push /usr/local/lib/node_modules/macaca-android/node_modules/uiautomatorwd/app/build/outputs/apk/app-debug.apk /data/local/tmp/com.macaca.android.testing错误
首先保证gradle已经成功安装,确认那两个apk存在如果,gradle安装没有问题
卸载macaca-android
npm uninstall macaca-android
npm uninstall app-inspector -g
npm cache clean
同时可以清理下下载缓存目录:
win10 在 C:\Users\xxx\AppData\Local\Temp 下 手动删除npm开头相关即可重新安装macaca-android
或者删除手机内三个应用(这是macaca升级导致apk签名不一致问题,基本手机里不会有)
android-unlock
com.macaca.android.testing.test
UiAutomator sample
*部分手机(*小米要允许USB安装需要查入sim卡)在连接macaca时不会弹出驱动安装提示,超时以后会提示Error=Unable to find instrumentation info for: ComponentInfocom.macaca.android.testing.test/android.support.test.runner.AndroidJUnitRunner等错误,总之前面步骤都没做错,就换台手机试试
启动macaca服务
macaca server -p 3456 --verbose
-p指定端口 --verbose可以打印详细信息(坑都靠这个定位问题了)
然后就可以执行用例了
实例:
官方python示例:
https://github.com/macaca-sample/sample-python
根据以上搭建方法就可以跑通官方的用例了,但是我跑的官方用例的6的case里有一个failed了,不知道是不是还有环境(错误日志发现是web的case没跑过)没搭好
更多示例:
https://github.com/macaca-sample
社区:
TesterHome里有比较好的中文社区,上面的很多坑都能在里面找到解决方法,github上也能找到很多信息,不过鉴于macaca并不是特别热门,社区的活跃度不高,甚至网上的资料都比较少
社区连接:
https://testerhome.com/topics/node68
(当然有钉钉的可以加官方的钉钉群)(非常不活跃)
以上是关于MACACA自动化框架搭建的主要内容,如果未能解决你的问题,请参考以下文章