问题标签 [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 投票
1 回答
925 浏览

ruby - Chrome DevTools 协议 addScriptToEvaluateOnNewDocument 使用 ruby​​ chrome_remote

因此,我试图注入一个脚本以在使用addScriptToEvaluateOnNewDocumentchrome 79 的任何页面上运行,但它似乎不起作用。

我正在使用 ruby​​ gem chrome_remote,它提供了对 CDP 的基本访问。

这是一个示例红宝石:

然后我开始使用 chrome--remote-debugging-port=9222

Page.addScriptToEvaluateOnNewDocument始终返回{"identifier"=>"1"}(即使我多次调用它,比如使用不同的脚本)。

当我在 Chrome 中打开的选项卡上打开控制台时(它可以工作,所以我知道 CDP 通常在工作),并检查 的值window.THIS_WAS_SET,它是未定义的。

有什么方法可以验证命令是否发送到浏览器,例如在浏览器中接收到的日志?有什么方法可以查看注入了哪些脚本?为什么每次调用总是返回ScriptIdentifier1,这似乎有问题?

有人有类似的例子吗?

0 投票
1 回答
821 浏览

google-chrome-devtools - CDP 过滤网络请求 - Puppteer

我正在尝试使用 Puppteer 获取特定网络请求的时间。

有没有办法在 Puppteer 中过滤来自 Chrome DevTools 协议的请求,以便responseReceived只有在收到这个特定的网络响应时才会触发?

我这个任务的实际代码是:

该文档建议使用 Fetch 作为Network.setRequestInterceptionhttps://chromedevtools.github.io/devtools-protocol/tot/Fetch)的替代品,但看起来 Fetch Domain 建议修改网络请求。

0 投票
0 回答
156 浏览

google-chrome - 如何使用不同的 Chrome devtools 协议版本

我想使用 Chrome DevTools 协议的一些实验性功能,例如DOMSnapshot.getSnapshot

现在,无论我如何在远程模式下打开 chrome,它总是在Protocol-Version: 1.3

我已经尝试过 chrome-dev chrome-canary。即使是 Microsoft edge dev 版本,但没有一个工作。

我尝试检查是否有任何 chrome 标志或命令行参数或开发工具协议命令来切换协议版本。但没有一个工作。

0 投票
2 回答
186 浏览

google-chrome-devtools - 在哪里可以找到有关页面生命周期事件的文档?

我正在使用 cdp ( https://github.com/mafredri/cdp ) 以使用 devtools 协议生成页面的 pdf。但首先我需要知道页面何时完全加载。我发现 networkIdle 事件可以帮助我知道何时发生这种情况。但是,我遇到了麻烦,因为 networkIdle 事件有时会触发两次。然后我需要知道这个什么时候被解雇

0 投票
1 回答
1300 浏览

electron - Getting Cypress to run Headless Electron with Chrome DevTools Protocol

Cypress version ^3.8.3

Using Chrome I am able to setup and attached to the Remote Debugging Port.

In cypress/plugins/index.js

When starting a cypress run I can then prefix with the environment variable CYPRESS_REMOTE_DEBUGGING_PORT=9222.

However, when I try and do similar with Electron, I never get a connection.

I feel like I'm missing something very simple! Any ideas on how to get Cypress Electron running the remote debug port, would be great!

0 投票
1 回答
268 浏览

cookies - Chrome DevTools 协议:`Network.setCookie({ sameSite: 'None' })` 失败,为什么?

我遇到一个问题,Chrome DevTools 协议{ success: false }在发送设置为的Network.setCookie请求时返回。sameSite"None"

可能是什么问题?"Lax"并且"Strict"看起来工作正常。

0 投票
1 回答
137 浏览

google-chrome-devtools - Chrome DevTools 中的“requestTime”数字是什么意思?

根据Chrome DevTools 协议查看器,该值requestTime是以秒为单位的基线。为了理解它,我从几个网页中获取了这个值,对于所有这些网页来说, 的值requestTime都出乎意料地大。例如,其中之一是 13133423 秒。有谁知道为什么值requestTime太大?价值是什么requestTime意思?

0 投票
1 回答
1408 浏览

python - 使用 Selenium-webdriver for python 自动阻止 Chrome 请求?

我可以使用 Selenium-webdriver for python 自动阻止 Chrome 请求吗?Python、Selenium、ChromeDriver、Chrome Devtool 协议。


'3#' 似乎是无效的。如何修改上述代码?

0 投票
0 回答
822 浏览

google-chrome-extension - 如何使用 Chrome Devtools 协议接收嵌入式 iframe 的事件?

我正在尝试使用Chrome Devtools 协议列出选项卡的网络和日志事件。我成功地为顶级框架这样做了,但我正在努力处理儿童 iframe。

当我有一个与父级相同域的 iframe 时,它​​会正确捕获网络和日志事件。当我有一个位于不同域的 iframe 时,它​​根本不会发出任何事件。

我试图通过设置自动附件

但这似乎对我没有任何帮助。如何在主动调试的选项卡下正确检查 iframe 的网络和日志事件?

这是我当前使用 setAutoAttach 的流程:

  1. 已加载选项卡
  2. 将 chrome 调试器注入选项卡
  3. 调用 Network.enable 以确保将收到任何网络消息(因为没有追溯日志记录)
  4. 通过扩展 API 重新加载选项卡
  5. onDOMContentLoaded -> 通过协议(日志、性能、运行时)启用所有 API 并设置 Target.setAutoAttach
  6. 处理消息

如果我执行此流程,则不会收到任何附加事件。如果我在第 2 点设置AutoAttach——在重新加载之前——那么我得到了 PREVIOUS 实例的 iframe。我只能在完全分离调试器,重新附加,然后调用 setAutoAttach 之后获取当前选项卡的 iframe。调用setAutoAttach1 秒的超时也最终给了我附加的选项卡,但是捕获网络流量为时已晚。

0 投票
2 回答
1786 浏览

java - Java WebSocket 消息限制

我正在尝试在简单的 Java App(使用java.net.http.WebSocket类)和远程google-chrome运行之间创建通信google-chrome --remote-debugging-port=9222 --user-data-dir=.

发送和接收小消息按预期工作,但对于较大的消息(16kb)存在问题。

这是java源代码的一部分:

这是堆栈:

我已经通过使用puppeteer(nodejs library)尝试了基本相同的方法,它按预期工作。

我在网上找不到有关此问题的任何资源。我的例子中有什么我遗漏的吗?


这是简单示例的网址: https ://github.com/zeljic/websocket-devtools-protocol