node.js - 有没有办法以编程方式访问和控制 Chrome Devtools 的 "Remote Devices"部分?

标签 node.js google-chrome-devtools puppeteer

我了解 Chrome Devtools 协议(protocol)通过 API 公开 Google Chrome DevTools 以进行编程控制,而 puppeteer 提供了一个 Node.js 实现来实现这一点。但是,如果我没记错的话,puppeteer 不允许我们做 DevTools 协议(protocol)可以做的一切

如果我想远程调试我的 android chrome 浏览器,就像我可以手动执行的那样,通过转到我的 DevTools 的“远程设备”部分,有没有办法绕过 puppeteer?是否有一个包可以让我们访问 DevTools 协议(protocol)的更多核心功能?

最佳答案

是的,你可以做到。 puppeteer 只是 Chrome DevTools Protocol 的包装器.要了解协议(protocol)的工作原理,您可能想看看 Protocol Fundamentals ,其中解释了基础知识。

要在这个较低级别上进行交流,您还可以使用 puppeteer。查看CDPSession文档,它公开了 API 的“低级”部分。

最小示例:

const client = await page.target().createCDPSession(); // creates a "low level" session
await client.send('COMMAND'); // sends the command to the browser
client.on('MESSAGE', () => { /* message from the browser received */ });

备选方案

如果您不想使用 puppeteer,还有多个其他库。 Node.js 最常用的是 chrome-remote-interface ,比 puppeteer 更底层。根据to the docs :

chrome-remote-interface [...] is a general purpose 1:1 Node.js binding for the Chrome Debugging Protocol. Use it if you need all the power of the raw protocol, e.g., to implement your own high-level API.

还有多个其他库(也适用于其他语言)。你可以找到一个 full list here .

关于node.js - 有没有办法以编程方式访问和控制 Chrome Devtools 的 "Remote Devices"部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55618469/

相关文章:

node.js - Node native 驱动程序导致查询内部查询失败

javascript - Passport.js 成功身份验证根本不调用

node.js - Nodejs setTimeout 循环在迭代数周后停止

node.js - Page.startScreencast Chrome DevTools 协议(protocol)低 FPS 问题

node.js - Sails.js 自定义路由引发 500 个禁止发布请求

java - 使用 Jsoup 解析 html 元素

javascript - Chrome : Print exception details to console

javascript - google lighthouse 如何计算 javascript 评估时间,以及为什么对于不同环境中的相同脚本,它会有很大差异

javascript - 在 Puppeteer 中获取 "Syntax Error: invalid or unexpected token"

javascript - Puppeteer 无法使用评估获取页面的innerHTML