如何等待直到加载chrome tab的纺车停止?

时间:2019-08-12 10:11:55

标签: javascript node.js puppeteer

是否有一个事件可以检测到Chrome上的制表符的加载纺车何时停止? 我尝试过:

  

networkidle0,networkidle2,domcontentloaded

没有成功

我需要等到页面加载时的

页前: https://www.translatetheweb.com/?from=&to=fr&ref=SERP&refd=www.bing.com&dl=fr&rr=UC&a=https%3a%2f%2fwww.247freepoker.com%2f

现在我使用30秒的waitFor

致谢

1 个答案:

答案 0 :(得分:3)

您可以尝试手动检查框架的_lifecycleEvents

当该帧获得networkIdle循环事件时,此函数将解决。

function waitForFrameLoaded(frame) {
    let fulfill;
    const promise = new Promise(x => fulfill = x);
    frame._frameManager.on('Events.FrameManager.LifecycleEvent', checkFrame)
    checkFrame(frame);
    return promise;

    function checkFrame(eventFrame) {
        if (eventFrame == frame && eventFrame._lifecycleEvents.has('networkIdle'))
        fulfill(frame);
    }
}

使用该功能,您可以执行以下操作:

const browser = await puppeteer.launch({ headless: false});
const page = await browser.newPage();
await page.goto("https://www.translatetheweb.com/?from=&to=fr&ref=SERP&refd=www.bing.com&dl=fr&rr=UC&a=https%3a%2f%2fwww.247freepoker.com%2f");
const frameElement = await page.waitForSelector('#frmTgt')
const frame = await frameElement.contentFrame();
await waitForFrameLoaded(frame);