我试图在我的测试文件夹中的所有文件上运行chromeless
这是我index.js
到目前为止
const {spawn} = require('child_process');
let fs = require('fs');
const proc = spawn('chrome', [
'--remote-debugging-port=9222',
'--disable-gpu',
'--headless'
]);
console.log(`Spawned child pid: ${proc.pid}`);
async function run() {
let path = __dirname;
const files = fs.readdirSync(path);
for (let filename of files) {
if (/.js$/.test(filename) && filename !== 'index.js') {
console.log(`executing: ${path}\\${filename}`);
const run = require(`${path}\\${filename}`);
await run();
}
}
process.kill(proc.pid);
}
run().catch(console.error.bind(console));
我无法让节点等待内部脚本执行,因此无头进程会立即被杀死
正确的方法是什么?我是否需要在chromeless之上使用其他工具,或者我只需要改进我的输入代码?
编辑(已解决)
我做错了,我将readdir更改为readdirSync然后返回了来自"孩子的承诺"脚本等待它
这是子脚本代码
const { Chromeless } = require('chromeless')
async function run() {
const chromeless = new Chromeless()
const screenshot = await chromeless
.goto('https://www.google.com')
.type('chromeless', 'input[name="q"]')
.press(13)
.wait('#resultStats')
.screenshot()
console.log(screenshot) // prints local file path or S3 url
// this returns a promise
return chromeless.end()
}
// run().catch(console.error.bind(console));
// default export the run function
module.exports = run;