`
angelguo
  • 浏览: 121295 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Macaca自动化测试之PC端测试

 
阅读更多

Macaca是一套完整的自动化测试解决方案。由阿里巴巴公司开源:

http://macacajs.github.io/macaca/

特点:

同时支持PC端和移动端(AndroidiOS)自动化测试。

支持JavaScriptNode.js)、JavaPython

本篇文章将介绍如何使用该工具时行PC端自动化测试。

 

Install Macaca                                    

1MacacaNode.js开发,所以需要安装Node.js

https://nodejs.org/en/

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()
复制代码

MacacaAPISelenium很像。

Python API文档:https://macacajs.github.io/wd.py/

分享到:
评论

相关推荐

    macaca阿里开源的一套完整的自动化测试解决方案

    Macaca,源自阿里巴巴开源社区,是一套全面的自动化测试解决方案,尤其针对移动端和PC端的应用程序。这个项目主要由JavaScript驱动,旨在简化测试脚本编写,提高测试效率,并且跨平台兼容,支持多种操作系统和设备。...

    python3 + macaca,selenium UI 自动化测试框架学习

    编写用例: ./testcase_yaml/ ./testcase_yaml_flow/ 执行用例:运行./testcase_run/test_case_run_all.py 测试报告:./report/ ...5,测试数据参数化- yaml文件管理测试数据 6,支持检查点.text 文本属性的检查

    跨平台自动化测试框架Macaca介绍.pptx

    **跨平台自动化测试框架Macaca**是针对现代软件开发中多设备、多平台测试需求而设计的一款创新性工具。在移动应用和桌面应用的自动化测试领域,Macaca提供了一种统一的API,使得开发者能够在不同的操作系统和设备上...

    Android-基于MacacaJava版的UI自动化示例

    基于MacacaJava版的UI自动化示例

    Macaca:开源自动化集成平台.zip

    Macaca:开源自动化集成平台.zip,Macaca command-line interface

    macaca环境搭建之Windows

    Macaca是一款开源的自动化测试框架,支持多种平台的Web和移动应用的自动化测试。本文主要介绍如何在Windows环境下搭建Macaca环境,包括JDK、Node.js以及Macaca的安装与配置。 #### 二、安装配置JDK **2.1 下载JDK*...

    藏经阁-南方航空Macaca技术实践-27.pdf

    Macaca是一款开源的测试自动化工具,能够轻松实现跨平台、多语言的测试自动化。 Macaca技术简介 Macaca是一款开源的测试自动化工具,由阿里云开发,旨在提供一种轻量级、跨平台、多语言的测试自动化解决方案。...

    南方航空Macaca技术实践.pdf

    首先,Macaca是针对自动化测试的一种解决方案,由“Monkey”演变而来,寓意其灵活和野性的特性。它主要由南方航空的移动架构师孔兆祥推广和应用,旨在降低学习成本,提供易用且轻量级的自动化测试工具。Macaca支持跨...

    macacaJava源码

    Macaca 是一个开源的自动化测试框架,主要用于移动应用和Web应用的自动化测试。它由 Alibaba Cloud 开发并维护,提供了一种跨平台的解决方案,支持 iOS、Android 和 Web 应用的测试。在 Java 社区中,Macaca 提供了 ...

    android UI 自动化测试 控制多机进行测试

    在某大神部分源码参考下,完成了到macaca的初步测试框架 目前支持单机运行用例及生成测试报告 实验:单用例执行完毕,多用例执行完成 遗留问题:多线程启动多服务器,后面的会出现启动不了,不稳定

    macacaUI自动化工程

    macaca的UI自动化测试,有取数、逻辑层、操作层、ui元素层一系类逻辑,完整,具有很好的参照性,记住要在idea工程里打开哦,还有之前要配置maven

    一套基于Macaca的Android测试框架.zip

    Android是一种基于Linux内核(不包含GNU组件)的自由及开放源代码的移动操作系统,主要应用于移动设备,如智能手机和平板电脑。该系统最初由安迪·鲁宾开发,后被Google公司收购并注资,随后与多家硬件制造商、软件...

    Android-macaca.zip

    Android-macaca.zip,多平台自动化解决方案。多端自动化解决方案,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。

    SoloPi:SoloPi自动化测试工具

    独奏 英文版: SoloPi是一个无线化,非侵入式的Android自动化工具,公测版拥有录制回放,性能测试,一机多控...同时,启动耗时计算工具还可以通过广播调用,可以非常方便的与UI自动化测试打通。详见。 一机多控 SoloPi

Global site tag (gtag.js) - Google Analytics