【问题标题】:Puppeteer `waitForNavigation` always return timeoutPuppeteer `waitForNavigation` 总是返回超时
【发布时间】:2021-08-12 03:46:06
【问题描述】:

这个问题之前可能已经被问过,但 Stackoverflow 中的所有现有解决方案都无法帮助我。我有以下sn-p:

const puppeteer = require('puppeteer');

const loginFn = async () => {
  const browser = await puppeteer.launch();

  const deviceWidth = 1920;
  const deviceHeight = 1080;

  const page = await browser.newPage();

  await page.setCacheEnabled(false);
  await page.setViewport({ width: deviceWidth, height: deviceHeight });
  await page.setUserAgent(
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'
  );
  await page.goto('https://testwebsite.com/');

  await page.click('.qrNYy');
  await page.waitForSelector('input[type="email"]');
  await page.waitForSelector('input[type="password"]');

  await page.type('input[type="email"]', 'test@gmail.com');
  await page.type('input[type="password"]', 'test123');

  await Promise.all([
    page.click('.ffwHVz'),
    page.waitForNavigation({
      waitUntil: 'networkidle0',
    }),
  ]);

  await page.screenshot({ path: 'example.png' });
  await browser.close();
}

(async () => {
  await loginFn();
})();

我总是得到TimeoutError: Navigation timeout of 30000 ms exceeded 错误,我尝试了waitUntil 的所有选项,包括networkidle0networkidle2loaddomcontentloaded 都无济于事(这些来自谷歌搜索和stackoverflow)。正如许多上述解决方案所建议的那样,我还在clickwaitForNavigation 上使用了Promise.all,但我似乎无法绕过这个问题。

是网站本身的原因吗?这取决于网站本身还是我的代码?注意:testwebsite.com 只是一个示例,但这正是我正在测试的网站上发生的情况,无论我多么努力,我似乎​​都无法通过。有人可以帮我吗?

【问题讨论】:

  • 您实际抓取的是哪个网站?代码乍一看似乎没问题,但我真的不能运行它来多说。

标签: javascript node.js puppeteer headless-browser


【解决方案1】:

waitForNavigation 的 Puppeteer 文档状态:

这会在页面导航到新 URL 或重新加载时解决

作为 SPA,Coinmarketcap 在登录或注册时不会重新加载页面或导航到另一个页面,因此 waitForNavigation 在这里不起作用。

相反,我建议您等待仅在用户登录时才出现的元素。这可能会起作用(未经测试):

  await Promise.all([
    page.click('.ffwHVz'),
    page.waitForSelector('.icon-User-Filled'),
  ]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-27
    • 2022-10-15
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多