Macaca是一套完整的自动化测试解决方案。由阿里巴巴公司开源:
http://macacajs.github.io/macaca/
特点:
同时支持PC端和移动端(Android、iOS)自动化测试。
支持JavaScript(Node.js)、Java、Python。
本篇文章将介绍如何使用该工具时行PC端自动化测试。
Install Macaca
1、Macaca由Node.js开发,所以需要安装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驱动之一。本文将从零介绍如何对 Electron 进行封装,实现一个简易版的驱动程序。
Run Sample
安装完成,接下来下载Sample。
https://github.com/macacajs/macaca-test-sample
根据Macaca的测试目录结构:
├── macaca-test
│ ├── testcase01.test.js
│ ├── testcase02.test.js
│ ├── testcase03.test.js
│ ├── ...
└── package.json
所以,创建macaca-test/目录,并将下载的macaca-desktop-sample.test.js 的文件放到该目录下。
macaca-desktop-sample.test.js
'use strict'; var wd = require('webdriver-client')({ platformName: 'desktop', browserName: 'electron' }); describe('macaca desktop sample', function() { this.timeout(5 * 60 * 1000); const driver = wd.initPromiseChain(); const initialURL = 'https://www.baidu.com'; before(() => { return driver .initDriver() .maximize() .setWindowSize(1280, 800); }); it('#0 should go into macaca', function() { return driver .get(initialURL) .sleep(3000); }); it('#1 should works with macaca', function() { return driver .elementById('kw') .sendKeys('macaca') .sleep(3000) .elementById('su') .click() .sleep(5000) .source() .then(function(html) { html.should.containEql('macaca'); }) .hasElementByCss('#head > div.head_wrapper') .then(function(hasHeadWrapper) { hasHeadWrapper.should.be.true(); }) .elementByXPathOrNull('//*[@id="kw"]') .sendKeys(' elementByXPath') .sleep(3000) .elementById('su') .click() .sleep(5000) .takeScreenshot(); }); it('#2 should go into web', function() { return driver .get(initialURL) .sleep(3000); }); it('#3 should works with web', function() { return driver .elementById('kw') .sendKeys('TesterHome') .sleep(3000) .elementById('su') .click() .sleep(5000) .source() .then(function(html) { html.should.containEql('TesterHome'); }) .takeScreenshot(); }); after((done) => { return driver .quit(done); }); });
运行测试:
>macaca run
或者:
>macaca run --verbose //加--verbose可以看到详细的执行过程。
或者指定某个测试脚本文件执行:
>macaca run -d .\macaca-test\macaca-desktop-sample.js
Chrome Run Test
1、安装macaca-chrome
>cnpm install macaca-chrome -g
2、修改macaca-desktop-sample.test.js代码。
'use strict'; var wd = require('webdriver-client')({ platformName: 'desktop', browserName: 'chrome' // 'electron' 修改为 'chrome' }); ……
Macaca in Python
前面介绍Macaca支持多种编程编程语言。
例子与API地址:
http://macacajs.github.io/macaca/python.html
1、安装Macaca Python Client,支持pip安装。
https://pypi.python.org/pypi/wd
>python3 -m pip install wd
2、启动Macaca服务
>macaca server --verbose
>> request.js:23:12 [master] pid:15972 get remote update info failed.
>> index.js:17:12 [master] pid:15428 webdriver server start with config:
{ port: 3456,
verbose: true,
ip: '192.168.253.1',
host: 'fnngj-PC',
loaded_time: '2016-09-14 22:20:42' }
>> middlewares.js:17:10 [master] pid:15428 base middlewares attached
>> router.js:108:10 [master] pid:15428 router set
>> webdriver sdk launched
……
该服务类似于Selenium-server。不同语言的自动化脚本通过该服务驱动浏览器执行。
编写Python自动化脚本。
macaca_py_test.py
import unittest from macaca import WebDriver from time import sleep desired_caps = { 'platformName': 'Desktop', #// iOS, Android, Desktop 'browserName': 'Chrome', #// Chrome, Electron } # 对应Macaca服务的ip和端口号。 server_url = { 'hostname': '127.0.0.1', 'port': 3456 } class MacacaTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.driver = WebDriver(desired_caps, server_url) cls.driver.init() @classmethod def tearDownClass(cls): cls.driver.quit() def test_get_url(self): 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() sleep(2) title = self.driver.title self.assertTrue('macaca',title) if __name__ == '__main__': unittest.main()
Macaca的API与Selenium很像。
Python API文档:https://macacajs.github.io/wd.py/
相关推荐
Macaca,源自阿里巴巴开源社区,是一套全面的自动化测试解决方案,尤其针对移动端和PC端的应用程序。这个项目主要由JavaScript驱动,旨在简化测试脚本编写,提高测试效率,并且跨平台兼容,支持多种操作系统和设备。...
编写用例: ./testcase_yaml/ ./testcase_yaml_flow/ 执行用例:运行./testcase_run/test_case_run_all.py 测试报告:./report/ ...5,测试数据参数化- yaml文件管理测试数据 6,支持检查点.text 文本属性的检查
**跨平台自动化测试框架Macaca**是针对现代软件开发中多设备、多平台测试需求而设计的一款创新性工具。在移动应用和桌面应用的自动化测试领域,Macaca提供了一种统一的API,使得开发者能够在不同的操作系统和设备上...
基于MacacaJava版的UI自动化示例
Macaca:开源自动化集成平台.zip,Macaca command-line interface
Macaca是一款开源的自动化测试框架,支持多种平台的Web和移动应用的自动化测试。本文主要介绍如何在Windows环境下搭建Macaca环境,包括JDK、Node.js以及Macaca的安装与配置。 #### 二、安装配置JDK **2.1 下载JDK*...
Macaca是一款开源的测试自动化工具,能够轻松实现跨平台、多语言的测试自动化。 Macaca技术简介 Macaca是一款开源的测试自动化工具,由阿里云开发,旨在提供一种轻量级、跨平台、多语言的测试自动化解决方案。...
首先,Macaca是针对自动化测试的一种解决方案,由“Monkey”演变而来,寓意其灵活和野性的特性。它主要由南方航空的移动架构师孔兆祥推广和应用,旨在降低学习成本,提供易用且轻量级的自动化测试工具。Macaca支持跨...
Macaca 是一个开源的自动化测试框架,主要用于移动应用和Web应用的自动化测试。它由 Alibaba Cloud 开发并维护,提供了一种跨平台的解决方案,支持 iOS、Android 和 Web 应用的测试。在 Java 社区中,Macaca 提供了 ...
在某大神部分源码参考下,完成了到macaca的初步测试框架 目前支持单机运行用例及生成测试报告 实验:单用例执行完毕,多用例执行完成 遗留问题:多线程启动多服务器,后面的会出现启动不了,不稳定
macaca的UI自动化测试,有取数、逻辑层、操作层、ui元素层一系类逻辑,完整,具有很好的参照性,记住要在idea工程里打开哦,还有之前要配置maven
Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件...
Android-macaca.zip,多平台自动化解决方案。多端自动化解决方案,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。
独奏 英文版: SoloPi是一个无线化,非侵入式的Android自动化工具,公测版拥有录制回放,性能测试,一机多控...同时,启动耗时计算工具还可以通过广播调用,可以非常方便的与UI自动化测试打通。详见。 一机多控 SoloPi