我正在尝试在我的测试文件夹中的所有文件上运行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;