问题标签 [chrome-devtools-protocol]

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 投票
0 回答
61 浏览

go - 使用来自客户端的密钥代码输入 chromedp

我在 javascript 中有一段代码向服务器发送一个请求,其中包含我的按键列表。我获取密钥代码的方式是这样的:

在我的 golang 代码中,我尝试使用这些在 chromedp 实例中键入一些文本,方法是:

问题是这种类型实际上是关键代码,我一直在试图找到一种方法来做到这一点,但我不知道。

有谁知道如何做到这一点?

提前致谢。

编辑

我已将代码添加到 github,这是 repo: https ://github.com/ericmackrodt/netscape-proxy

客户端收集键码并将它们作为查询参数发送到此处:

https://github.com/ericmackrodt/netscape-proxy/blob/main/templates/browser.html#L48

服务器在此处从客户端接收密钥代码:

https://github.com/ericmackrodt/netscape-proxy/blob/main/server.go#L80

然后对其进行解析并尝试在此处键入它们:

https://github.com/ericmackrodt/netscape-proxy/blob/main/browser/browser.go#L70

代码应该很容易重现。

0 投票
0 回答
67 浏览

chrome-devtools-protocol - Chrome DevTools 协议 - 发送 Mediakey 不起作用

我想使用 Chrome DevTools 协议发送(模拟)媒体密钥(VK_MEDIA_PLAY_PAUSE)。因此我使用方法

与参数

但它不起作用。我能做些什么来解决这个问题?

0 投票
0 回答
202 浏览

google-chrome - 如何从 chrome 获取 DOM.shadowRootPushed 事件?

我一直在尝试使用from来获取DOM.shadowRootPushed事件。这是加载的页面包含 shadowRoot:CDPSessionpuppeteer

而且,我正在使用这个脚本来获取事件:

我明白了Animation.animationCreated。CDP 网站称DOM.shadowRootPushed是一个实验性事件。是否需要在启动选项中传递标志?依赖项:

Chrome Version版本 90.0.4427.0(开发者构建)(64 位)

调试日志:

更新:

根据评论,我添加了以下标志:

并应用dev, beta, canary,stable--fake-variations-channel. 未捕获通知。

0 投票
0 回答
72 浏览

electron - 如何使用开发工具 API 自动启用自定义开发工具格式化程序?

我想在我的 Electron 应用程序的开发工具中启用“自定义格式化程序”设置,如下所述:https ://github.com/MarshallOfSound/electron-devtools-installer/issues/36#issuecomment-285956783

手动启用设置是可能的,但我想在打开开发工具时自动进行,这样其他开发人员就不必记住自己做。

是否可以通过Electron API使用开发工具命令自动启用此设置?Debugger

我发现单击开发工具中的复选框会通过Chromium 中的此代码路径,但否则我无法弄清楚如何使用调试器 API 以编程方式执行此操作。

我尝试了以下方法:

但设置似乎没有改变。

0 投票
0 回答
221 浏览

cookies - Puppeter / PuppeteerSharp:Cookie 标头覆盖是间歇性的

我想为网页中的单个请求覆盖 ​​cookie 标头。为此,我目前正在使用PuppeteerSharp和 Chrome Devtools Protocol Fetch API(具体来说,我正在使用Fetch.enableFetch.requestPausedFetch.continueRequest)。

请注意,我不想使用Network.setCookie,因为我想绕过浏览器对 cookie 存在的了解。(换句话说,我不希望 cookie 出现在 Chrome DevTools -> Applications -> Cookies 选项卡中)。

我观察到这是间歇性的。如何使此 cookie 覆盖不是间歇性的,而是适用于所有请求?

这是 PuppeteerSharp 代码:(SET THE COOKIE HEADER OVERRIDE重要部分请参见注释)

如果我查看 Chrome DevTools Network 选项卡,我发现 21 个请求中只有 3 个具有abcdefg=1234567cookie 覆盖。下面是一个没有的请求示例: 在此处输入图像描述


更新:在进行更多研究时,chrome.webRequest onBeforeSendHeaders确实可以完成我正在寻找的工作,即在不告诉浏览器 cookie 是什么的情况下覆盖单个请求的 cookie 标头。是一个删除 cookie 标头的代码示例(我找不到以上面 Puppeteer 代码片段的方式替换 cookie 标头的示例)。

现在要弄清楚 PuppeteerSharp 是如何onBeforeSendHeaders做到的......

0 投票
0 回答
38 浏览

google-chrome - 监控无头 Chrome

我通过 CDP(Chrome devtools 协议)在无头模式下使用 Chrome 进行 HTML 到 PDF 的转换。效果很好,但我不相信 Chrome 会永远运行,我想构建一个守护服务来监控它的响应能力,并在必要时终止进程并重新启动它。

什么是健康的良好指标?我正在寻找的是一个低开销的测试,我可以以相当频繁的时间间隔执行,以便最大限度地减少重启延迟。

  • 如果有人有建议和确定成功的可靠方法,我可以尝试执行某种 CDP 命令。
  • 我想不出其他任何东西,这就是为什么我把它打开以征求建议。
0 投票
0 回答
121 浏览

c# - Chrome Devtools 协议和发布

使用 Chrome Devtools 协议 (CDP) 可以使 Chrome “导航”到 URL。这样做会产生一个 GET。

有没有办法用 POST “导航”并提供身体?NavigateCommand 似乎只定义了 Url、CommandName、FrameId、Referer 和 TransitionType。

我正在使用 CDP 的 BaristaLabs 实现的变体。执行 GET 的代码如下所示:

参数是我的postBody,它还没有做任何事情。

显然,帖子通常来自远程客户端。但我看不出它无法模拟的任何内在原因,除了没有命令来模拟它。

我怀疑这个问题实际上是关于 CDP 以及我可能需要添加到 Barista Labs CDP 实施中的内容。

0 投票
1 回答
367 浏览

electron - 如何在电子中使用 Chrome DevTools 协议的 Page.startScreencast 命令录制为图像或视频?

我想使用Chrome DevTools Protocol的Page.startScreencast命令记录我的电子应用程序的内容?

找不到任何示例用途。怎样才能做到这一点?

0 投票
1 回答
388 浏览

node.js - chrome远程接口ECONNREFUSED 127.0.0.1:9222

我正在使用 Testcafe,它不直接支持访问 Chrome 开发工具。我的目标是切断网络,以便我可以在网站上看到错误对话框。这是我写的代码。TestCafe 在不同的 url 打开 这是 URL: http: //192.168.0.123 :52678/someRandomStringHere/https://abcdefgh.com/abcdefgh/

我无法为此 url 配置参数。仅供参考,端口号更改,它不是固定的。有人可以帮我解决这个问题。

0 投票
0 回答
40 浏览

javascript - 如何使用 Puppeteer 捕获渲染过程?

我想要页面外观更改时的所有屏幕截图和时间戳,以便我可以重播渲染过程。

我尝试使用 每隔 x 秒截屏一次page.screenshot(),但截屏似乎延迟了。