节点:在文件夹

时间:2017-11-29 08:55:58

标签: node.js automation google-chrome-headless chromeless

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

0 个答案:

没有答案