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端和移动端

基本环境:

  1. JDK的安装及环境配置;(1.8)
  2. Node.js的安装及环境配置;(8+)
  3. android SDK安装及环境配置;(25+)
  4. gradle安装及环境配置;
  5. python环境配置;

JDK的安装及环境配置

java环境配置就略过了,不过要声明一点就是:最好使用Java8

因为Java9以上更新了不少特性,会后续导致Android SDK的配置出现各种问题,这里不描述Android SDK安装出现的问题。

Node.js的安装及环境配置

macaca由Node.js开发,所以需要安装Node.js

  1. 直接到官网下载稳定版本的msi包安装(8以上版本)
    坑:安装路径可以修改,但是保证一定不要有空格!
    巨坑:对于已经安装过Node.js的,请检查一下路径是否存在空格(一般默认路径是C:\Program Files\nodejs,Program Files之间就存在空格)
    安装完毕后可检查是否成功
    技术图片

  2. 配置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 prefix

    npm config get cache

  3. 添加PATH环境变量

    在【系统变量】下新建【NODE_PATH】,输入【X:\xxx\nodejs\node_global\node_modules】,
    在【用户变量】下的【Path】修改npm的路径为【X:\xxx\nodejs\node_global】

android SDK安装及环境配置

  1. http://tools.android-studio.org/index.php/sdk下载sdk manager,安装
    如果前面安装的是Java9以上,可能会出现无法定位JAVA_HOME,sdk manager一闪而过等情况

  2. 安装如下图工具:
    技术图片
    技术图片
    技术图片
    技术图片
    备注:
            a) Android SDK Build-tools一定要选择25.0.2版本,不然后续可能会出错
            b) 原本要求是使用API25的,但是我后续安装时却提示要用API26

  3. 配置Android SDK环境变量
    创建系统变量ANDROID_HOME,变量值:X:\xxx\sdk(以安装目录为准,确认里面有tools和add-ons等多个文件夹)
    PATH变量值的最后追加 ;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\build-tools;

  4. 在cmd输入adb,android检查配置是否正常

gradle安装及环境配置

  1. https://gradle.org/releases/选择最新版本,点complete
  2. 在系统变量中添加"GRADLE_HOME"变量 C:\Gradle\gradle-4.6 (你的gradle根目录)
    在系统变量PATH中添加 %GRADLE_HOME%\bin;(你的gradle解压目录下的bin文件夹)
  3. cmd命令行窗口输入gradle -v,显示如下内容即可

    技术图片

python环境配置

python环境搭建略,macaca只支持Python3.4以上版本,本人使用的是python3.6

安装macaca相关

  1. macaca-cli 核心框架
    (cmd要以管理员模式打开,不然权限不够安装)
    安装命令:npm i macaca-cli -g 出现下图惊悚的猴子和成功提示就ok了
    技术图片

  2. 使用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"

  3. 安装各种驱动(网上的教程基本都让换淘宝源,但是公司可以连外网,我实际使用时下载也不慢,所以可以直接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

  4. 安装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)


  5. 安装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自动化框架搭建的主要内容,如果未能解决你的问题,请参考以下文章

iOS自动化环境搭建——macaca

Macaca环境配置及样例执行

Macaca自动化测试之Android测试

macaca搭建

自动化框架思路

属于你自己的自动化框架思路