问题标签 [puppeteer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Puppeteer 记录在 page.evaluate
如何在 page.evaluate 中 console.log 某些内容,将其传递给节点并在评估页面期间使用它?
我实际上想记录页面的进度。评估到控制台并向用户显示一些结果。
node.js - 使用 Puppeteer 和无头 Chrome 获取 DOM 节点文本
我正在尝试使用无头 Chrome 和 Puppeteer 来运行我们的 Javascript 测试,但我无法从页面中提取结果。基于这个答案,看起来我应该使用page.evaluate()
. 该部分甚至有一个看起来像我需要的示例。
作为一个完整的示例,我尝试将其转换为一个脚本,该脚本将从我在 Stack Overflow 上的用户个人资料中提取我的姓名。我们的项目使用的是 Node 6,所以我将await
表达式转换为使用.then()
.
当我运行它时,我收到此错误:
问题似乎在于将输入参数序列化为page.evaluate()
. 我可以传入字符串和数字,但不能传入元素句柄。示例是错误的,还是 Node 6 的问题?如何提取 DOM 节点的文本?
google-analytics - 使用 Puppeteer 和 Mocha / Sinon(或类似工具)从 Google Analytics 中窥探数据层
因此,我正在尝试使用 Headless Chromes + Puppeteer + Mocha + Sinon 对我的 Google Analytics 调用进行自动测试,但无法读取数据层值以供 Sinon 进行监视。
这就是我到目前为止所拥有的。但是窗口总是未定义的。test 是一个代理传递 puppeteer 调用到内部浏览器的类。
这是浏览器类:
node.js - 如何在事件侦听器中捕获异常?
我使用 Puppeteer 库打开一个 URL 并处理所有请求的响应。有时在事件监听page.on('response')
器中我需要抛出一个错误,如下例所示。但是我无法以任何方式捕获这些异常,我总是得到unhandled promise rejection
错误。我该如何处理这些异常?我不想使用process.on('unhandledRejection')
,因为它根本不能解决我的问题。
javascript - puppeteer 表单提交后新加载的页面
我正在使用 puppeteer 来衡量页面的性能及其功能(这仍处于初始阶段,因为我才刚刚开始)。这是我正在使用的示例:
表单提交后如何访问新加载的页面?我的意思是用户已经登录,我们如何才能获得新加载页面的句柄?
cookies - 无头 Chrome Puppeteer 跳过使用 Cookie 登录 Twitter?
是否可以通过设置 cookie 跳过登录 Twitter?
我试图在 Web 控制台中复制从“document.cookie”获得的内容,但这给了我错误Invalid parameters name: string value expected
javascript - 使用 Puppeteer 在循环中抓取多个 URL
我有一组 URL 可以从以下位置抓取数据:
这就是我正在做的事情:
这似乎不等待页面加载并很快访问所有 URL(我什至尝试使用page.waitFor
)。
我想知道我是否在做一些根本错误的事情,或者不建议/支持这种类型的功能。
javascript - 当使用所有文件都需要这样的模块时,如何将代码拆分为多个文件?
在这种情况下,我使用的是 puppeteer chrome 无头浏览器和 mongoDb。这是我的代码:
我想将我的代码拆分为相关文件,如“chrome.js”、“twitter.js”、“database,js”、“utilities.js”。问题是我几乎在每个文件中都需要上面声明的这 4 个变量,并且在每个函数中传递它们似乎很愚蠢。我也不能将它们重新声明到每个文件中,因为这会打开一个新的 chrome 浏览器并建立一个新的数据库连接。