javascript - Puppeteer 如何检查页面上是否存在类
问题描述
我正在尝试使用 puppeteer 检查网页上是否存在类。例如,假设您想抓取某些数据,并且您知道数据存储在某个类中。要抓取数据,您需要使用类名来抓取它。这是我尝试使用的代码。这没用。
let pageClicked = document.querySelector('.classIAmTryingToFind')
if(pageClicked){
console.log('False')
await browser.close()
}else{
console.log('True')
await browser.close()
}
运行代码时出现此错误。
UnhandledPromiseRejectionWarning: Error: Protocol error (Runtime.callFunctionOn): Target closed.
解决方案
我不确定您在哪里或如何执行您的示例代码。如果我们假设它在“评估”函数的回调中,这应该有效:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('https://stackoverflow.com/', { waitUntil: 'networkidle0' }) // check networkidle0 parameter and others here: https://pptr.dev/#?product=Puppeteer&version=v2.1.1&show=api-pagegotourl-options
const pageClicked = await page.evaluate(() => {
return !!document.querySelector('.classIAmTryingToFind') // !! converts anything to boolean
})
if (pageClicked) { // you had the condition reversed. Not sure if it was intended.
console.log('True')
} else {
console.log('False')
}
await browser.close()
})()
我希望它有帮助!
推荐阅读
- java - 如何读取每行带有数字的文件java
- c# - 如何从 .NET Framework 调用 .NET Core 程序集中的方法
- sql-server - 为什么我的应用会一直打开太多的休眠连接?
- amazon-s3 - Kafka S3 连接:基于挂钟的定时轮换似乎没有写
- python - 在表格小部件中显示不正确的列表
- node.js - 每当使用 Firebase 函数创建另一个集合中的另一个文档时,如何从集合中更新文档?
- reactjs - 如何使用 CDN 链接(如普通 JavaScript/Vue.js)从另一个 .js 文件中使用 React.js?
- angular - 自动刷新页面调用web服务
- php - 在 Octobercms 的页面中运行外部 PHP 脚本
- stackexchange-api - 用于正文中文本的 Stack Overflow 搜索 API