Macaca 使用实践——阿里开源自动化解决方案

本次内容包括:

  • Macaca 简介
  • Macaca 安装部署
  • Macaca 使用示例
  • Macaca 常用命令

一、Macaca 简介

1、背景

  • 随着移动时代和智能终端时代的到来,我们的产品已经遍布各终端,单一的运行时架构往往不能满足工程的需要,为给用户带来更优质、完整的体验,Macaca 支持主流的移动技术平台 iOS,Android,以及两大平台的混合运行时 Webview,也支持以往的桌面端浏览器。

2、优点

  • Macaca 是一套面向用户端软件的测试解决方案,提供了自动化驱动,周边工具,集成方案,旨在解决终端上的测试、自动化、性能等方面的问题。

    Macaca 是 Monkey 的一种,含义引自(Monkey Test),取灵动、敏捷之意。

  • Macaca 的底层设计便于端的横向扩展,会根据开发平台提供的测试驱动及时调整集成方案。

  • Macaca 提供 Node.js, Java, Python 三大主流的语言栈,方便工程师和所在团队选择合适的开发语言。

3、发展趋势

  • Macaca 是由阿里巴巴公司开发的一套自动化解决方案,于2016年开源,社区人数日益增多,

二、Macaca 安装部署

1、安装nodejs: https://nodejs.org/en/

(1)什么是Node.js?

看了很多解释,觉得这样总结比较通俗易懂:node.js是一种Javascript的运行环境,能够使得JavaScript脱离浏览器运行,从而节省了写后台的时间。

(2)为什么要安装Node.js?

因为macaca是用node.js工具开发的,所以需要安装其开发平台。

(3)怎么安装Node.js?

  • 到官网http://nodejs.org/下载安装包,下一步,下一步,直接安装即可。(so easy,就不详细介绍了~)

  • 安装成功后,在DOS窗口中测试是否安装成功。

在DOS窗口输入node –version 命令回车,出现版本号,证明安装成功;如下图:
这里写图片描述

2、安装cnpm

(1)npm是什么?

  • npm是NodeJS 的包管理工具,能解决NodeJS代码部署上的很多问题;大家用Python的话,应该使用过pip工具,npm之于NodeJS就类似于pip之于Python;也类似于yum之于CentOS。

  • 新版的nodejs已经集成了npm,所以安装nodejs的时候npm也一并安装好了。同样可以通过输入 “npm -v” 来测试是否成功安装。命令如下,出现版本提示表示安装成功:
    这里写图片描述

(2)cnpm是什么?

  • 因为npm安装插件是从国外服务器下载,受网络影响大,可能出现异常。阿里自己做了一个npm镜像,方便小伙伴使用,就是cnpm了;

(3)安装cnpm

(4)检查是否安装成功

  • 输入cnpm -v,回车,显示如下图:
    这里写图片描述

3、安装命令行工具 macaca-cli

  • cnpm i -g macaca-cli

4、安装webdriver

  • cnpm i -g webdriver-client

5、安装chrome

  • npm i macaca-chrome -g

6、安装chromedriver

  • npm i macaca-chromrdrivet -g

7、安装uirecorder(录制脚本)

  • npm i uirecorder -g

8、安装Python API

  • pip install wd

三、Macaca 使用示例

1、启动Macaca服务

  • macaca server –verbose;
    这里写图片描述

2、编写一个脚本

import unittest
import time
from macaca import WebDriver

desired_caps = {
    'platformName': 'Desktop',  #// iOS, Android, Desktop
    'browserName': 'Chrome',    #// Chrome, Electron
}

# 对应Macaca服务的ip和端口号。
server_url = {
    'hostname': 'localhost', #127.0.0.1
    'port': 3456               #macaca server 启动端口
}


class MacacaTest(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.driver = WebDriver(desired_caps, server_url)
        cls.driver.init()
        cls.driver.set_implicitly_wait(20)

    @classmethod
    def tearDownClass(cls):
        cls.driver.close()

    def test_get_url(self):
        self.driver.set_window_size(1280, 800)
        self.driver.get("https://www.baidu.com")
        self.assertEqual(self.driver.title,"百度一下,你就知道")

    def test_search_macaca(self):
        self.driver.element_by_id('kw').send_keys('macaca')
        self.driver.element_by_id('su').click()
        time.sleep(5)
        eles = self.driver.elements('xpath','//div[contains(@class, "result")]/h3/a')
        for ele in eles:
            res = ele.text.lower()
            print(res)
            self.assertTrue('macaca'in res)

if __name__ == '__main__':
    unittest.main()

3、运行脚本

  • PyCharm运行结果如下图
    这里写图片描述

  • 在命令行运行结果如下图
    这里写图片描述
    部分截图
    这里写图片描述

4、脚本分析

  • 引入unittest和Macaca的WebDriver的包
  • 设定启动参数,是Web还是移动端;使用哪个浏览器
  • 设定Macaca的server,包括ip和端口
  • 后面的代码就是业务逻辑了

四、Macaca 常用命令

1、服务端

  • macaca server (正常模式)
  • macaca server -p 3456 (设置端口)
  • macaca server -p 3456 & (设置端口后台运行)
  • macaca server –verbose(输出详细日志)

2、测试

  • macaca run (运行当前目录用例集)
  • macaca run -d ./test (运行指定目录下用例集)

3、检查

  • macaca doctor (环境检查)

4、帮助

  • macaca -h
  • macaca server -h
  • macaca run -h
  • macaca doctor -h
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页