zoukankan      html  css  js  c++  java
  • 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-testmacaca-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/

    =========================

    移动端的环境颇为麻烦,如果你没有安装过Appium的话。我将会在下一篇博客。

     

  • 相关阅读:
    2.1.1 Speed Limit
    2.1.2 骑自行车的最短时间
    1.3.1提高实数精度的范例
    1.2.2一个数可以有多少种用连续素数之和表示
    求二倍关系的个数 1.2.1
    求平均值
    原生JS 购物车及购物页面的cookie使用
    基于Jquery的商城商品图片的放大镜效果(非组件)
    商城商品购买数量增减的完美JS效果
    弹性布局各种坑爹兼容
  • 原文地址:https://www.cnblogs.com/fnng/p/5873878.html
Copyright © 2011-2022 走看看