笔者近几月某公司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
的谬误。
(未完)