首页 > 解决方案 > Puppeteer page.waitForNavigation() 超时

问题描述

我在使用 puppeteer 单击按钮并导航到下一页时遇到了一些困难。每当我运行程序时,它都会超时并给我:TimeoutError:超过 30000 毫秒的导航超时。我的程序目前只是在 ubereats.com 中输入一个地址,然后单击 Find Food 按钮。

我已经在使用

await Promise.all([
        page.waitForNavigation(),
        page.click("#wrapper > main > div.ao.ap.aq.ar.af > div.ag.bq.br.bs.bn > div > button"),
    ]);

当我在 google.com 上尝试相同的代码(使用不同的选择器)时,它可以工作。当我将 headless 设置为 false 运行它时,它显示输入地址并滚动到按钮的中心,但之后没有任何反应。当我手动单击按钮时它起作用了。我还尝试了所有不同的 waitForNavigation 选项。任何指导都会非常有帮助!提前致谢。

完整代码供参考:

async function scrapeProduct(url, address) {
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();
    await page.goto(url);

    await page.type("#location-typeahead-home-input", address);
    await Promise.all([
        page.waitForNavigation(),
        page.click("#wrapper > main > div.ao.ap.aq.ar.af > div.ag.bq.br.bs.bn > div > button"),
    ]);
    await page.screenshot({path: "test.png"});

    browser.close();
}

标签: javascriptpuppeteer

解决方案


  await page.waitForNavigation({waitUntil: 'networkidle0',timeout:0});

推荐阅读