问题标签 [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 回答
1733 浏览

javascript - 如何使用 Puppeteer 保持 Chromium 打开?

我只想从第一个脚本启动一个 Chromium 实例,然后从其他脚本附加到它。我知道 puppeteer.connect() 但问题是我启动了应该启动 Chromium 的脚本:

...它永远不会结束,因为我没有做 browser.close()。因此,我无法开始运行其他脚本。如何启动 Chromium,获取其端点并结束剩余的 Chromium 启动的脚本。

这个不包含适当的答案)

0 投票
1 回答
194 浏览

webautomation - Puppeteer:打开无头实例非无头

想知道是否可以打开以前的无头实例非无头并从您停止的地方继续。我试图在此过程中将 headless 更改为 false,但是,它没有用。

提前致谢

0 投票
2 回答
2474 浏览

javascript - 使用 Puppeteer 获取所有纯文本

我可以使用 Puppeteer 获取所有页面代码,但我如何才能仅获取纯文本?没有标签?

0 投票
1 回答
2295 浏览

javascript - 如何运行 Google Chrome 无头 Puppeteer 代码

我正在尝试使用 puppeteer(特别是在延迟后截取屏幕截图,但我的问题比这更基本)

https://github.com/GoogleChrome/puppeteer

我已成功运行以下命令。

文档说以下

使用其他浏览器测试框架的人会熟悉 Puppeteer。您创建一个 Browser 实例,打开页面,然后使用 Puppeteer 的 API 操作它们。

不幸的是,我不熟悉其他浏览器测试框架,也不知道“创建浏览器实例”是什么意思。

我看到了examples/screenshot.js 文件。它包含以下内容。

我没有在任何自述文件、文档或问答中提到如何运行此代码。一切似乎都假设这一步是显而易见的,它可能是,但我不知所措,因为我对 Node.js 不是很熟悉。

  • 我打了电话node examples/screenshot.js,但终端没有给出任何反馈,并且图像不是在我指定的任何路径中创建的。权限是正确的。

  • 我也试着node install.js先打电话。

  • 我曾尝试直接在终端中内联运行脚本,但这会在终端中给出“意外的令牌(”)。

  • 我什至尝试在浏览器中运行它。显然那没有用。

如何运行 puppeteer 代码?

0 投票
1 回答
3264 浏览

jestjs - 在所有 Jest 测试中重用相同的 Puppeteer 实例

问题

我正在用 Jest + Puppeteer 替换 CasperJS。将所有内容放在一个文件中效果很好:

现在,我真的不想将所有内容都保存在一个文件中。仅运行部分测试(例如,仅“测试 A”)更难维护,也更难运行。

我试过的

我查看了 Jest 文档并阅读了setupScript。这将是完美的,但它在每个测试文件之前运行。我不想要这个,因为 puppeteer 设置需要很多时间。无论我将运行多少个测试文件,我都想重复使用相同的浏览器实例并只支付一次设置成本。

于是,我想到了:

这解决了模块化,重用相同的浏览器实例,但不允许我单独运行测试。

最后,我偶然发现了创建自定义testEnviroment的可能性。这听起来不错,但没有很好的文档记录,所以我什至不确定是每个测试文件还是每个 Jest 运行都创建了 env 实例。稳定的 API 也缺少一种setup我可以设置 puppeteer 的方法(我必须在不能异步的构造函数中这样做)。

为什么我要问

由于我是 Jest 的新手,我可能会遗漏一些明显的东西。在我深入研究之前,我想在这里问一下。

0 投票
0 回答
693 浏览

javascript - 使用 Puppeteer 从下拉菜单中选择值

我刚刚开始使用 Puppeteer API,尽管我已经看了多深,但我找不到解决这个错误的可靠方法。基本上,我试图聚焦一个下拉菜单元素并从中选择一个值。不幸的是,我尝试过的每个解决方案,无论是从这里还是从其他来源获得的,都没有奏效。

这是我尝试过的事情的清单:

如何从下拉选择中选择一个选项

从下拉菜单中获取价值?

如何选择下拉选项

在这件事上,任何帮助都将不胜感激,它一直把我逼到墙边,是唯一阻碍我完成项目的事情。

编辑:这是我到目前为止的代码,如果有帮助的话。

0 投票
6 回答
25064 浏览

javascript - 使用 Puppeteer 时等待文本出现

我想知道是否有与 Selenium 类似的方式来等待特定元素的文本出现。我已经尝试过这样的事情,但它似乎并没有等待:

0 投票
2 回答
5929 浏览

google-chrome - 如何使用 puppeteer 的 API page.addScriptTag 绕过 CSP(Content-Security-Policy)?

设想:

我在无头模式下使用 puppeteer 启动 chrome,并page.addScriptTag使用跨域 javascript 文件调用。现在,如果打开站点设置了 csp 并且仅限制相同来源的 javascript 标签,我如何使用 puppeteer API 绕过它?

0 投票
2 回答
969 浏览

puppeteer - Puppeteer 中的 pageFunction 返回空对象

page.$evalPuppeteer中使用,我不知道为什么pageFunction当对象不为空时 a 会返回一个空对象。这是一个代码示例:

如何在 result2 中恢复整个元素?

0 投票
1 回答
2579 浏览

javascript - 如何在 Puppeteer 中截屏或 PDF 之前删除标签?

我需要在截屏或生成 PDF 之前删除标签。

有什么办法可以导致这种情况吗?

我尝试添加page.addScriptTag(options)and page.addStyleTag(options)

我收到如下错误: