问题标签 [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.

0 投票
1 回答
1818 浏览

async.js - 我如何知道 Puppeteer 中的页面是否已关闭

当页面存在(或打开)时,我需要在页面上做一些动作。但是其他异步代码可以随时关闭它。我尝试使用代码,如下所示:

我怎么知道页面是打开还是关闭,将此代码传递给测试功能?

0 投票
8 回答
47643 浏览

javascript - Puppeteer:获取 innerHTML

有人知道如何获取innerHTML元素的或文本吗?甚至更好;如何单击具有特定元素的元素innerHTML?这就是它与普通 JavaScript 一起工作的方式:

提前感谢您的帮助!

0 投票
6 回答
70647 浏览

javascript - 在 puppeteer 中按 Enter 按钮

在 puppeteer 中按 enter 似乎没有任何效果。但是,当我按下其他键时,它会做它应该做的事情。这有效:

这不会:

这是输入的样子:

在此处输入图像描述

有任何想法吗?

编辑:我也试过 page.keyboard.down 和 page.keyboard.up 来确定。

0 投票
1 回答
887 浏览

node.js - 崩溃后 Chrome 无头自动重启监听器

我正在寻找使用 puppeteer api 在节点 JS中自动重启 chrome的解决方案:

就像是:

如果处理了错误或错误,我在文档中没有找到一种让监听器的方法。

有人有解决方案吗?

谢谢 !

最大限度

0 投票
1 回答
1411 浏览

node.js - Headless Chrome Puppeteer 从没有 id 的下拉列表中选择选项

我主要使用带有 nodejs puppeteer 库的无头 chrome。我在选择或单击下拉菜单中的任何选项时遇到问题。问题是所有的 ID 都是动态的,每次点击都会改变。我尝试过抓取 HTML 并搜索当前 ID,但无济于事。

还有另一种选择选项的方法吗?是否可以使用除 id 之外的其他选择器?

下拉代码

图片注释:在上面写着“homeState-aria-id-7”的地方,数字 7 是动态生成的

0 投票
0 回答
512 浏览

http - Puppeteer chrome无头中的Http Post Form请求

我正在使用puppeteer进行一些网络抓取。
1.我需要使用post方法来发布一个表单,并且还要指定请求头。

2.将响应下载为pdf文件。
我不完全确定如何编写 puppeteer 的 Request 和 Response 类的语法。

有什么建议么?

0 投票
1 回答
5955 浏览

javascript - 页面评估的返回值(puppeteer,asnyc 编程)

我遇到了以下问题:我在 puppeteer 中有一个页面评估,其中包括异步部分。我想将异步部分的值返回给 puppeteer,但是,它只是返回 undefined 而不等待 Promise 解决。有人如何解决这个问题吗?

我的示例代码:

傀儡师示例:

Chromes API 评估

根据这个链接和更新的 API,puppeteer 总是评估代码,如果评估是一个承诺,则等待承诺解决并返回承诺值。

提前感谢您的帮助!

编辑:我想通了!

0 投票
4 回答
35557 浏览

puppeteer - Puppeteer - 如何填写 iframe 内的表单?

我必须填写 iframe 内的表格,这里是示例页面。我无法通过简单地使用page.focus()and访问page.type()。我试图通过使用来获取表单 iframe const formFrame = page.mainFrame().childFrames()[0],它可以工作,但我不能真正与表单 iframe 交互。

0 投票
8 回答
14926 浏览

google-chrome-headless - Puppeteer 安装有错误

我有木偶师的问题。我无法在我的 debian 8.7.1 上安装它。这些是步骤:

1.安装铬:

2.安装nodejs & puppeteer:

当我运行npm i puppeteer时,错误是:

我运行命令npm config set PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true跳过下载,但它还想下载铬。

有什么想法可以解决这个问题吗?

0 投票
1 回答
2802 浏览

javascript - 在 puppeteer 中加载和使用 JS 模块

我正在构建一个供内部使用的 npm 包。它的功能之一是 DOM 解析,所以我需要在浏览器中加载它。我想使用 puppeteer 进行测试。

在文档中,我发现page.injectFile()用于本地 JS 文件。但是,我的文件是一个模块(我正在注入的文件已经转译为常规 JavaScript),我不知道将其注入 puppeteer 的浏览器页面后该怎么做。

到目前为止我的代码:

我得到一个errorReferenceError: require is not defined因为我正在使用 require in MyModule。我什至可以在 puppeteer 中使用这样的 JS 模块吗?如果可以,获取实例MyModule并使用它的正确方法是什么?