笔者近几月某公司 WiFi 测试平台我的项目中,理解到他们测试 WiFi 始终是人工手动测试,因而在老师提议下,决定采纳 puppeteer 去实现页面数据的爬取和更改的自动化,在施行过程中,发现 – 路由治理页面 – 登陆后只有 cookie 加密,并且页面的数据和操作通过向同一接口传递不同参数实现,因而能够通过 promise-request 办法疾速的实现上述性能。
本文次要记录、总结:
- node.js 子过程的创立:node.js:child_process(官网文档)
- fork 和 spawn 的区别与分割
- Ipc 实现过程间通信
- WebSocket 实现过程间通信
1. node.js 子过程的创立
node 创立子过程的办法能够参考上述官网文档,外面有具体的配置和阐明。在本文中,笔者着重介绍笔者应用到的 child_process.spawn()
办法和 child_process.fork()
办法。
Master 过程代码:
const child_process = require('child_process');// 引入 child_process 模块
const {recLog} = require("./utils/log");// 因为执行父过程,子过程无奈在控制台打印信息,因而封装了 log4js 办法。const gChildProcessNumber = 3;// 创立子过程数量 - 全局
creatProcess();
async function creatProcess() {for (let i = 0; i < gChildProcessNumber; i += 1) {const workerProcess = child_process.spawn('node', ['./Request_Test/ChildProcess.js']);
}
}
Child 过程代码:
const {recLog} = require("./utils/log");
recLog(` 子过程创立胜利,执行 ChildProcess.js 文件, 过程 pid 为:${process.pid}`)
执行后果:
留神:这里应用 child_process.spawn()
办法,因为笔者子过程运行的文件为 js 文件,因而间接用 node 运行,如果运行的是其余文件,比方笔者之前运行的×××.e2e.js 文件时,笔者运行指令为 npm test ×××.e2e.js,就须要写成如下:
const workerProcess = child_process.spawn('npm.cmd', ['test', './Request_Test/request.e2e.js'], {});
因为在 Windows 上,当咱们执行 npm 时,咱们理论执行的是 npm. cnd 批处理,所以肯定要显示的执行 npm.cmd 否则会呈现 Error: spawn npm ENOENT
的谬误。
(未完)