TA的每日心情 | 奋斗 2021-8-6 16:14 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]测试小兵
|
Install Macaca
1、Macaca由Node.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()
复制代码
复制代码
Macaca的API与Selenium很像。
Python API文档:https://macacajs.github.io/wd.py/
|
|