3

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

0 回答 0