Mcaca+Python 测试环境搭建及上手
Macaca是一套面向用户端软件的测试解决方案,提供了自动化驱动,周边工具,集成方案,旨在解决终端上的测试、自动化、性能等方面的问题,很多人选择它的原因简单:轻量化(相比于appium),跨平台(windows,android,ios),持续集成的reliable(Reliable 是 Node.js 实现的分布式持续集成服务) ,元素查看app-inspector,支持用例录制的uirecorder;等等
Macaca环境搭建:
- 安装nodejs: https://nodejs.org/en/ (安装这个原因不用说了吧)
- 安装cnpm切换淘宝源: npm install -g cnpm --registry=https://registry.npm.taobao.org ; (cnpm安装东西能快一点)
- 安装 macaca-cli: cnpm i -g macaca-cli
- 安装webdriver: cnpm i -g webdriver-client
- 安装electron: cnpm i -g macaca-electron
- 安装chrome: npm i macaca-chrome -g
- 安装chromedriver: npm i macaca-chromrdrivet -g
- 安装Android: npm i macaca-android -g
- 安装ios: npm i macaca-ios -g
- 安装uirecorder(录制脚本): npm i uirecorder -g
- 安装app-inspector(查看元素): npm i app-inspector -g
- 安装Python API: pip install wd
安装完上面的命令,基本上Mcaca+python的环境已经搭建好了;如果是需要进行移动测试,安卓还需要安卓SDK;见我下面这张大图;

Macaca执行测试用例
- 启动macaca服务: macaca server --verbose;
C:\Users\Administrator>macaca server --verbose
>> index.js:: [master] pid: webdriver server start with config:
{ port: ,
verbose: true,
always: true,
ip: '172.27.35.1',
host: 'USER-6IG90K3098',
loaded_time: '2017-02-08 15:43:03' }
>> middlewares.js:: [master] pid: base middlewares attached
>> router.js:: [master] pid: router set
>> webdriver sdk launched - 执行Python测试用例:python baidu.py;
C:\Users\Administrator>d: D:\>cd D:\zsfile\macaca-test-sample-python-master\tests D:\zsfile\macaca-test-sample-python-master\tests>python baidu.py
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
.C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py::
ResourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6,
type=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py:: R
esourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6, t
ype=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )>
.C:\Python35\lib\site-packages\wd-0.1.-py3..egg\macaca\remote_invoker.py::
ResourceWarning: unclosed <socket.socket fd=, family=AddressFamily.AF_INET6,
type=SocketKind.SOCK_STREAM, proto=, laddr=('::1', , , ), raddr=('::1',
, , )> ----------------------------------------------------------------------
Ran tests in .592s OK执行成功如上图;
- 附上baidu.py代码,用例为测试百度查询;
# coding=utf-8
import unittest
import time
from macaca import WebDriver
from macaca import WebElement desired_caps = {
'platformName': 'desktop',
'browserName': 'electron'
} server_url = {
'hostname': 'localhost',
'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.set_window_size(1280, 800)
self.driver.get("https://www.baidu.com") def test_search_macaca(self):
self.driver.element_by_id('kw').send_keys('macaca')
self.driver.element_by_id('su').click()
time.sleep(5)
html = self.driver.source
self.assertTrue('macaca'in html)
self.assertTrue(self.driver.element_by_css_selector_if_exists(
'#head>div.head_wrapper'))
self.driver.element_by_xpath_or_none(
'//*[@id="kw"]').send_keys('elementByXPath')
self.driver.element_by_id('su').click()
self.driver.take_screenshot()
if __name__ == '__main__':
unittest.main()基本上桌面上的就是这样了;android和ios后续再跟上;
Mcaca+Python 测试环境搭建及上手的更多相关文章
- Selenium + python 测试环境搭建
Windows平台(py3 已经自带了工具包) 准备工具: python.setuptools(python工具基础包).pip(python安装包管理工具) 安装步骤: 1.python安装,运行e ...
- Selenium + python 测试环境搭建扩展-HTMLUNIT的使用
尝试给公司的网站写每日例行检查的脚本时,不需要去打开浏览器,这是就用到HTMLUNIT的使用 HTMLUNIT是基于Selenium服务端的,所以需要selenium-server-standalon ...
- Appium Python测试环境搭建
详细参考地址:https://www.cnblogs.com/amoyshmily/p/10500687.html 1,Appium安装:https://github.com/appium/appiu ...
- selenium + python 测试环境搭建 (WINDOWS)
1. 下载Python , 运行.exe -> http://python.org/getit/ 2. 下载Python Setuptools 基础包管理工具安装,官方文档参考 https:// ...
- Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建;学习Python语言,利用Python语言来写测试用例。加油!!!
Python+selenium测试环境成功搭建,简单控制浏览器(firefox)接下来,继续学习其他浏览器上的测试环境搭建:学习Python语言,利用Python语言来写测试用例.加油!!!
- python开发环境搭建
虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...
- Eclipse中Python开发环境搭建
Eclipse中Python开发环境搭建 目 录 1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...
- 总结Selenium自动化测试方法(二)测试环境搭建
(接上期内容) 二.测试环境搭建 1.安装python 现在python3.0比python2.0多了一些改进的功能(详见http://zhidao.baidu.com/link?url=3sT1g7 ...
- selenium + python 自动化测试环境搭建
selenium + python 自动化测试 —— 环境搭建 关于 selenium Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操 ...
随机推荐
- cocos2dx 3.2 的中国象棋游戏
改编来源:http://cn.cocos2d-x.org/tutorial/lists?id=103 在cocos2dx官网看到了这么个教程,是cocos2dx 2.x版本的,于是用 cocos2dx ...
- golang中container/heap包源码分析
学习golang难免需要分析源码包中一些实现,下面就来说说container/heap包的源码 heap的实现使用到了小根堆,下面先对堆做个简单说明 1. 堆概念 堆是一种经过排序的完全二叉树,其中任 ...
- mongodb 分片群集(sharding cluster)
实际环境架构 分别在3台机器运行一个mongod实例(称为mongod shard11,mongod shard12,mongod shard13)组织replica set1,作为cluster的s ...
- (简单) POJ 3074 Sudoku, DLX+精确覆盖。
Description In the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 × 3 subgr ...
- WAV音频格式分析
wav是windows下无损的声音文件,该文件保存了音频的PCM信息和播放器播放该音乐的时候的大多数信息,他有两个块组成,第一个块是格式块,第二个块是数据块 先说格式块,格式块用一张图可以解释,如下 ...
- MySQL 启动、关闭、选择数据库等命令
一.MySQL服务的启动和停止 1.net 命令来启动或停止mysql服务 net stop mysql(mysql是指你真正装的服务,如果装的是 mysql5,必须写成 net stop mysql ...
- jqGrid简述
转自:http://www.blogjava.net/ilovebabyfat/archive/2012/04/06/373456.html jqGrid学习之 ------------- 安装 1. ...
- Linux ALSA声卡驱动之二:声卡的创建
1. struct snd_card 1.1. snd_card是什么 snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都 ...
- ASIHTTPRequest异步请求 分类: ios技术 2015-03-01 09:33 48人阅读 评论(0) 收藏
我们运行程序,如果网速很慢,查询的时候会一直黑屏,直到请求结束画面才出现,这样用户体验很不好.因此同步请求一般只是在某个子线 程中使用,而不在主线程中使用.异步请求的用户体验要比同步请求好,因此一般情 ...
- leetcode-位运算
位运算可以大大减小算法空间复杂度,提高效率,很巧妙! 先说一下位运算的简单用法 1. 按位与 & 用途:清零,取一个数中的某些指定位,保留一个数中的某些指定位 2. 按位或 | 用途:将一个数 ...