问题标签 [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.
ruby - Chrome DevTools 协议 addScriptToEvaluateOnNewDocument 使用 ruby chrome_remote
因此,我试图注入一个脚本以在使用addScriptToEvaluateOnNewDocument
chrome 79 的任何页面上运行,但它似乎不起作用。
我正在使用 ruby gem chrome_remote,它提供了对 CDP 的基本访问。
这是一个示例红宝石:
然后我开始使用 chrome--remote-debugging-port=9222
将Page.addScriptToEvaluateOnNewDocument
始终返回{"identifier"=>"1"}
(即使我多次调用它,比如使用不同的脚本)。
当我在 Chrome 中打开的选项卡上打开控制台时(它可以工作,所以我知道 CDP 通常在工作),并检查 的值window.THIS_WAS_SET
,它是未定义的。
有什么方法可以验证命令是否发送到浏览器,例如在浏览器中接收到的日志?有什么方法可以查看注入了哪些脚本?为什么每次调用总是返回ScriptIdentifier
1,这似乎有问题?
有人有类似的例子吗?
google-chrome-devtools - CDP 过滤网络请求 - Puppteer
我正在尝试使用 Puppteer 获取特定网络请求的时间。
有没有办法在 Puppteer 中过滤来自 Chrome DevTools 协议的请求,以便responseReceived
只有在收到这个特定的网络响应时才会触发?
我这个任务的实际代码是:
该文档建议使用 Fetch 作为Network.setRequestInterception
(https://chromedevtools.github.io/devtools-protocol/tot/Fetch)的替代品,但看起来 Fetch Domain 建议修改网络请求。
google-chrome - 如何使用不同的 Chrome devtools 协议版本
我想使用 Chrome DevTools 协议的一些实验性功能,例如DOMSnapshot.getSnapshot。
现在,无论我如何在远程模式下打开 chrome,它总是在Protocol-Version: 1.3
我已经尝试过 chrome-dev chrome-canary。即使是 Microsoft edge dev 版本,但没有一个工作。
我尝试检查是否有任何 chrome 标志或命令行参数或开发工具协议命令来切换协议版本。但没有一个工作。
google-chrome-devtools - 在哪里可以找到有关页面生命周期事件的文档?
我正在使用 cdp ( https://github.com/mafredri/cdp ) 以使用 devtools 协议生成页面的 pdf。但首先我需要知道页面何时完全加载。我发现 networkIdle 事件可以帮助我知道何时发生这种情况。但是,我遇到了麻烦,因为 networkIdle 事件有时会触发两次。然后我需要知道这个什么时候被解雇
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!
cookies - Chrome DevTools 协议:`Network.setCookie({ sameSite: 'None' })` 失败,为什么?
我遇到一个问题,Chrome DevTools 协议{ success: false }
在发送设置为的Network.setCookie
请求时返回。sameSite
"None"
可能是什么问题?"Lax"
并且"Strict"
看起来工作正常。
google-chrome-devtools - Chrome DevTools 中的“requestTime”数字是什么意思?
根据Chrome DevTools 协议查看器,该值requestTime
是以秒为单位的基线。为了理解它,我从几个网页中获取了这个值,对于所有这些网页来说, 的值requestTime
都出乎意料地大。例如,其中之一是 13133423 秒。有谁知道为什么值requestTime
太大?价值是什么requestTime
意思?
python - 使用 Selenium-webdriver for python 自动阻止 Chrome 请求?
我可以使用 Selenium-webdriver for python 自动阻止 Chrome 请求吗?Python、Selenium、ChromeDriver、Chrome Devtool 协议。
'3#' 似乎是无效的。如何修改上述代码?
google-chrome-extension - 如何使用 Chrome Devtools 协议接收嵌入式 iframe 的事件?
我正在尝试使用Chrome Devtools 协议列出选项卡的网络和日志事件。我成功地为顶级框架这样做了,但我正在努力处理儿童 iframe。
当我有一个与父级相同域的 iframe 时,它会正确捕获网络和日志事件。当我有一个位于不同域的 iframe 时,它根本不会发出任何事件。
我试图通过设置自动附件
但这似乎对我没有任何帮助。如何在主动调试的选项卡下正确检查 iframe 的网络和日志事件?
这是我当前使用 setAutoAttach 的流程:
- 已加载选项卡
- 将 chrome 调试器注入选项卡
- 调用 Network.enable 以确保将收到任何网络消息(因为没有追溯日志记录)
- 通过扩展 API 重新加载选项卡
- onDOMContentLoaded -> 通过协议(日志、性能、运行时)启用所有 API 并设置 Target.setAutoAttach
- 处理消息
如果我执行此流程,则不会收到任何附加事件。如果我在第 2 点设置AutoAttach——在重新加载之前——那么我得到了 PREVIOUS 实例的 iframe。我只能在完全分离调试器,重新附加,然后调用 setAutoAttach 之后获取当前选项卡的 iframe。调用setAutoAttach
1 秒的超时也最终给了我附加的选项卡,但是捕获网络流量为时已晚。
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