Macaca自动化测试之PC端测试
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/
=========================
移动端的环境颇为麻烦,如果你没有安装过Appium的话。我将会在下一篇博客。
Macaca自动化测试之PC端测试的更多相关文章
- python自动化测试之连接几组测试包实例
python自动化测试之连接几组测试包实例 本文实例讲述了python自动化测试之连接几组测试包的方法,分享给大家供大家参考.具体方法如下: 具体代码如下: class RomanNumera ...
- Macaca自动化测试之Android测试
Macaca PC端 Web自动化测试非常类似于Selenium,而移动端自动化测试非常类似于Appium,如果你搭建过Appium环境,Macaca移动端环境的搭建将非常简单. 本文继承上一篇,关于 ...
- Macaca初体验-PC端(Python)
前言: Macaca 是一套面向用户端软件的测试解决方案,提供了自动化驱动,周边工具,集成方案.由阿里巴巴公司开源:http://macacajs.github.io/macaca/ 特点: 同时支持 ...
- H5测试与PC端测试不同的点
1.通过H5网页(非手机的返回功能)的返回功能可以返回,不会出现无法返回的情况. 2.横屏竖屏相互切换,能自适应,并且布局不会乱掉: 3.为能在不同分辨率的手机上能更好的展示,建议采用响应式设计(如: ...
- H5测试区别与PC端测试关注点
除了基本的业务逻辑功能测试之后,H5页面的测试,需要关注以下几点: 1. 通过H5网页(非手机的返回功能)的返回功能可以返回,不会出现无法返回的情况. 2. 横屏竖屏相互切换,能自适应,并且布局不 ...
- selenium自动化测试之【数据驱动测试】
数据驱动测试是自动化测试的主流设计模式之一,相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为进行了完全的分离,这样的测试脚本设计模式称为数据驱动.实施数据驱动测试的步骤:1.编写测试脚本,脚 ...
- PC/APP/H5三端测试的相同与不同
随着手机应用的不断状态,同一款产品的移动端应用市场占相较PC端也越来越大,那么app与PC端针对这些产品的测试有什么相同与不同之处呢?总结如下: 首先谈一谈相同之处: 一,针对同一个系统功能的测试,三 ...
- PC、APP、H5三端测试的相同与不同
随着手机应用的不断状态,同一款产品的移动端应用市场占相较PC端也越来越大,那么app与PC端针对这些产品的测试有什么相同与不同之处呢?笔者总结如下: 首先谈一谈相同之处... 一,针对同一个系统功能的 ...
- PC、APP、H5三端测试的区别
一,针对同一个系统功能的测试,三端所测的业务流程是一样的 二,一般情况下手机端和PC端都对应一套后台服务,比如说笔者公司所开发的互联网金融平台,整个平台做了分布式服务架构,后台服务包括用户服务.交易服 ...
随机推荐
- “我爱背单词”beta版发布与使用说明
我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院 拒 ...
- WPF整理-处理没有注意到的异常
在.NET中,我们使用try-catch-finally来处理异常.但,当一个Exception抛出,抛出Exception的代码又没有被try包围时,程序就崩溃了. 这些异常往往是你没有注意到的.在 ...
- web Api 返回json 的两种方式
web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...
- perl 切换 dnspod 域名记录
提供域名,dnspod 账户密码(毕竟dns密码比较重要 不能谁 cat一下都可以看到 需要base64加密),原IP,切换目标IP, #!/bin/perl use warnings; use MI ...
- SQL Server无法收缩日志文件 2 因为逻辑日志文件的总数不能少于 2问题
SQL Server无法收缩日志文件 2 因为逻辑日志文件的总数不能少于 2问题 最近服务器执行收缩日志文件大小的job老是报错 我所用的一个批量收缩日志脚本 USE [master] GO /*** ...
- 为首次部署MongoDB做好准备:容量计划和监控
如果你已经完成了自己新的MongoDB应用程序的开发,并且现在正准备将它部署进产品中,那么你和你的运营团队需要讨论一些关键的问题: 最佳部署实践是什么? 为了确保应用程序满足它所必须的服务层次我们需要 ...
- MySQL 分区介绍总结
200 ? "200px" : this.width)!important;} --> 介绍 分区是指根据一定的规则将一个大表分解成多个更小的部分,这里的规则一般就是利用分区 ...
- 利用Hexo搭建个人博客-博客发布篇
通过 <利用Hexo搭建个人博客-环境搭建篇> 以及 <利用Hexo搭建个人博客-博客初始化篇>,我们了解到了利用Hexo搭建个人博客需要的环境以及配置,下面这篇文章将会介绍如 ...
- netstat
netstat再解读 C:\Users\Administrator>netstat -nb 活动连接 协议 本地地址 外部地址 状态 TCP ESTABLISHED [mysqld.exe] T ...
- Getting&Giving
Technologies: Want to know: 1 emergency 1: 现在的工作即将需要的.要用到的技术 2 emergency 2: 现在的工作不相关.但公司相关的的技术 3 eme ...