【问题标题】:Puppeteer error Error: waiting on selector times outPuppeteer 错误错误:等待选择器超时
【发布时间】:2019-07-07 22:31:16
【问题描述】:

目前我有一个网站,它的 HTML 中有这个。我通过检查 chrome 开发者工具中的元素确认了这一点。

<div class="hdp-photo-carousel" style="transform: translateX(0px);">
  <div class="photo-tile photo-tile-large">

我在视觉上看到页面打开,我可以看到项目在那里。然后我在 30 秒后收到此错误:

UnhandledPromiseRejectionWarning: TimeoutError: waiting for selector ".photo-tile" failed: timeout 30000ms exceeded

我在 puppeteer js 中的代码是:

await page.waitForSelector('.photo-tile');

谁能告诉我我做错了什么?

编辑我正在添加整个代码:

const pptrFirefox = require('puppeteer-firefox');

(async () => {
  const browser = await pptrFirefox.launch({headless: false});
  const page = await browser.newPage();
  await page.goto('https://zillow.com');
  await page.type('.react-autosuggest__input', '8002 Blandwood Rd. Downey, CA 90240');
  await page.click('.zsg-search-button_primary');
  await page.waitForSelector('.photo-tile');

        console.log('did I get this far?');

})();

【问题讨论】:

  • 添加了@vsemozhetbyt
  • 您是否在与puppeteer-firefox 运行的浏览器完全相同的浏览器中检查了选择器?对我来说,当显示错误并在 Firefox 控制台中运行 document.querySelector(".photo-tile") 时,我得到 null。但是,我可以看到一个图像块,Chrome 中的相同选择器为其返回元素。会不会是页面对于不同的浏览器或者浏览器版本有不同的DOM?
  • 让我检查一下你所说的选择器@vsemozhetbyt
  • @FabricioG 更改了 headless : true 并使用“Inspect”对其进行调试
  • 我检查了它,它确实出现在 Firefox 浏览器上。 @vsemozhetbyt

标签: javascript node.js web-scraping puppeteer


【解决方案1】:

每次页面内容更新时都需要添加page.waitForNavigation()

(async () => {
  const browser = await pptrFirefox.launch({headless: false});
  const page = await browser.newPage();
  const navigationPromise = page.waitForNavigation({waitUntil: "domcontentloaded"});
  await page.goto('https://zillow.com');
  await navigationPromise;
  await page.type('.react-autosuggest__input', '8002 Blandwood Rd. Downey, CA 0240');
  await page.click('.zsg-search-button_primary');
  await navigationPromise;
  await page.waitForSelector('.photo-tile');

  console.log('did I get this far?');

})();

【讨论】:

  • 多个await navigationPromise;是没有用的,如果解决了一次,下次已经解决了,马上返回。您的意思可能是 2x await page.waitForNavigation({waitUntil: "domcontentloaded"})
猜你喜欢
  • 1970-01-01
  • 2017-12-26
  • 2023-04-03
  • 2013-11-25
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多