Puppeteer 无法正常工作(pause/freeze 当浏览器未处于焦点时)

Puppeteer not working as excepted (pause/freeze when browser not in focus)

我正在使用 Puppeteer.js 来抓取一些 URL。我使用的是 Puppeteer 的默认 Chromium 浏览器。
一切正常,但问题是,当我 运行 爬行脚本,并在后台做其他事情时,焦点没有在 Puppeteer 的 Chromium 浏览器上更长,它不起作用:等待元素的时间太长,并中止操作,或者换句话说:puppeteer 暂停(或冻结)。

P.S,我还使用 puppeteer-extra and puppeteer-extra-plugin-stealth NPM 包作为高级选项。

以下是我创建浏览器和页面的方式:

async initiateCrawl(isDisableAsserts) {
    // Set the browser.
    this.isPlannedClose = false;
    const browser = await puppeteerExtra.launch({
        headless: false,
        args: [
            '--no-sandbox',
            '--disable-setuid-sandbox',
            '--disable-dev-shm-usage',
            '--start-maximized',
            '--disable-background-timer-throttling',
            '--disable-backgrounding-occluded-windows',
            '--disable-renderer-backgrounding'
        ]
    });
    const pid = browser.process().pid;
    browser.on('disconnected', () => {
        systemUtils.killProcess(pid);
        if (!this.isPlannedClose) {
            systemUtils.exit(Status.BROWSER_CLOSE, Color.RED, 0);
        }
    });
    process.on('SIGINT', () => {
        this.close(browser, true);
    });
    // Set the page and close the first empty tab.
    const page = await browser.newPage();
    const pages = await browser.pages();
    if (pages.length > 1) {
        await pages[0].close();
    }
    await page.setRequestInterception(true);
    await page.setJavaScriptEnabled(false);
    await page.setDefaultNavigationTimeout(this.timeout);
    page.on('request', (request) => {
        if (isDisableAsserts && ['image', 'stylesheet', 'font', 'script'].indexOf(request.resourceType()) !== -1) {
            request.abort();
        } else {
            request.continue();
        }
    });
    return {
        browser: browser,
        page: page
    };
}

我已经看过:
https://github.com/puppeteer/puppeteer/issues/3339
https://github.com/GoogleChrome/chrome-launcher/issues/169
https://www.gitmemory.com/issue/GoogleChrome/puppeteer/3339/530620329

无效解决方案:

const session = await page.target().createCDPSession();
await session.send('Page.enable');
await session.send('Page.setWebLifecycleState', {state: 'active'});
const chromeArgs = [
  '--disable-background-timer-throttling',
  '--disable-backgrounding-occluded-windows',
  '--disable-renderer-backgrounding'
];
var ops = {args:[
        '--kiosks',
        '--disable-background-timer-throttling',
        '--disable-backgrounding-occluded-windows',
        '--disable-renderer-backgrounding',
        '--disable-canvas-aa',
        '--disable-2d-canvas-clip-aa',
        '--disable-gl-drawing-for-tests',
        '--disable-dev-shm-usage', 
        '--no-zygote', 
        '--use-gl=desktop', 
        '--enable-webgl',
        '--hide-scrollbars',
        '--mute-audio',
        '--start-maximized',
        '--no-first-run',
        '--disable-infobars',
        '--disable-breakpad', 
        '--user-data-dir='+tempFolder, 
        '--no-sandbox',
        '--disable-setuid-sandbox'
    ], headless: false, timeout:0   };
puppeteer = require('puppeteer');
    browser = await puppeteer.launch(ops);
    page = await browser.newPage();

有没有人以前遇到过这个问题并且知道如何解决这个问题?谢谢。

当我更新到最新的 puppeteer 版本 (9.0.0) 后,我的问题得到了解决。