您的位置:首页 > 其它

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

2017-12-20 14:40 423 查看

本次内容包括:

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

npm install cnpm -g –registry=https://registry.npm.taobao.org

(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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐