javascript - 多个选择器上的 Puppeteer waitForSelector

标签 javascript puppeteer screen-scraping

我让 Puppeteer 使用可以返回结果或“未找到记录”消息的查找表单控制网站。我怎么知道哪个被退回了?
waitForSelector 似乎一次只等待一个,而 waitForNavigation 似乎不起作用,因为它是使用 Ajax 返回的。
我正在使用 try catch,但要正确并减慢一切速度很棘手。

try {
    await page.waitForSelector(SELECTOR1,{timeout:1000}); 
}
catch(err) { 
    await page.waitForSelector(SELECTOR2);
}

最佳答案

使任何元素存在
您可以使用 querySelectorAllwaitForFunction一起来解决这个问题。使用带逗号的所有选择器将返回与任何选择器匹配的所有节点。

await page.waitForFunction(() => 
  document.querySelectorAll('Selector1, Selector2, Selector3').length
);
现在这只会返回 true如果有一些元素,它不会返回哪个选择器匹配了哪些元素。

关于javascript - 多个选择器上的 Puppeteer waitForSelector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49946728/

相关文章:

javascript - 通用库的 <svg> 的 setAttributeNS xmlns

javascript - 调整 &lt;iframe&gt; 的大小,以便整个内容按比例缩小或放大

jestjs - 将 Jest 步骤定义提取到单独的文件

javascript - 如何在 puppeteer 中等待选择器,但仅等待特定时间段?

javascript - Mouseenter 和 mouseleave 动画

ffmpeg - 使用 puppeteer 在 Linux 服务器上录制带有声音的 Web 浏览器作为服务

php - 设置 session 以抓取页面

python 的 scrapy 似乎没有从所有可用的 URL 中获取数据

python - Scrapy 仅抓取每个页面的第一个结果

javascript - AngularJS 中保留键/值关联的对象按字母顺序排列选项