问题标签 [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.
google-chrome - 如何在更改 chrome 扩展中侦听可用的调试目标更改
我正在构建一个 Chrome 扩展程序。我已经通过 的方法获得了所有目标chrome.debugger.getTargets
,我想听这个目标更改事件。然后我找到了 Target.setDiscoverTargets,所以我尝试使用以下代码。
但我收到一条错误消息。
Unchecked runtime.lastError: {"code":-32000,"message":"Not allowed"}
有人能告诉我为什么这个命令不允许,是 sendCommand 的目标第一个参数错误还是 chrome 扩展不支持这个方法?
javascript - 如何在 playwright 中运行自定义 js 函数
如何在 playwright 中运行自定义 js 函数?例如显示警报。我已经尝试过这种方式,但没有奏效。
javascript - DevTools 无法加载 SourceMap:无法加载 file:///path/to/source.js.map 的内容
当我使用--inspect运行Node.js 打字稿项目时,我转到 URL“localhost:9229/json/list”并选择 URL“devtoolsFrontendUrlCompat”(注意:需要从 URL 的开头删除“chrome-”作为 GOOGLE chrome 团队再次弄乱了 URL,否则它将进入谷歌搜索)。
当开发工具在 URL "devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=localhost:9229/d34a4b4c-8583-43b7-90e3-bec3f1809995" 上启动时,我只在开发者上看到编译的 javascript 文件工具,但源地图未按以下屏幕截图加载:
[DevTools 无法加载 SourceMap][1]
几个月前,一切(包括源映射加载)都在工作,但现在当我尝试做同样的事情时,我只能看到编译后的 javascript 文件,但我无法调试 typescript 文件,因为 CHROME 无法加载这些源映射。我在网上到处搜索,很惊讶没有人问这个问题,而且真的很讨厌 GOOGLE chrome 团队因为每次发布都弄乱了 chrome。说真的,他们是最糟糕的。
如果任何知道解决方案的 Node.js 开发人员可以在这里帮助我,那就太好了。请。
google-chrome - 是否可以在一个 CDP 会话中两次使用 CDP 方法的“Runtime.addBinding”?
我需要调查不同“bindingCalled”事件中的两个函数。我想知道是否可以?
node.js - 使用 devtool 协议从嵌入式 iframe 中捕获请求(XHR、JS、CSS)
对于上下文,我正在使用 Nodejs 和 puppeteer 开发一个综合监控工具。对于定义场景的每个步骤,我都会捕获屏幕截图、瀑布和性能指标。
我的问题出在瀑布上,我以前使用过 puppeter-har 但这个包无法捕获导航之外的请求。因此,我使用这段代码来捕获所有有趣的请求:
在步骤开始时:
在步骤结束时:
它适用于导航事件,也适用于 Web 应用程序内部的导航。但是,我尝试监控的 Web 应用程序具有包含主要内容的 iframe。我想在我的瀑布中看到 iframe 请求。
所以有几个问题:
- 为什么 Network.responseReceived 或任何其他事件没有捕获此请求?
- 是否可以捕获此类请求?
到目前为止,我已经修改了 devtool 协议文档,但我无法使用。我发现最接近我的问题的是这个问题: 如何使用 Chrome Devtools 协议接收嵌入式 iframe 的事件?
我的猜测是,我必须为可能遇到的每个 iframe 启用网络。我没有找到任何方法来做到这一点。如果有办法用 devtool 协议来做,我用 nodsjs 和 puppeteer 来实现应该没有问题。
感谢您的见解!
编辑 18/08:
在对该主题进行更多搜索后,主要是进程外 iframe,互联网上的很多人都指向该响应: https ://bugs.chromium.org/p/chromium/issues/detail?id=924937#c13
答案是问题状态:
请注意,最简单的解决方法是 --disable-features 标志。
也就是说,要通过 DevTools 协议处理进程外 iframe,您需要使用 Target [1] 域:
- 使用 flatten=true 调用 Target.setAutoAttach;
- 您将收到带有 iframe 的 sessionId 的 Target.attachedToTarget 事件;
- 将该会话视为 chrome-remote-interface 中的单独“页面”。发送带有额外 sessionId 字段的单独协议消息:
{id: 3, sessionId: "", method: "Runtime.enable", params: {}}- 您将获得具有相同“sessionId”字段的响应和事件,这意味着它们来自该帧。例如:
{sessionId:“”,方法:“Runtime.consoleAPICalled”,参数:{...}}
但是我仍然无法实现它。
我正在尝试这个,主要基于 puppeteer :
但是对于 iframe 内的 Web 应用程序中的导航,我仍然没有预期的输出。
但是,我能够在加载 iframe 的步骤中捕获所有请求。我想念的是在正确导航之外发生的请求。
有没有人知道将上述铬响应整合到 puppeteer 中?谢谢 !
javascript - Chrome DevTools 协议:如何取消订阅 Page.javascriptDialogOpening 事件
我正在使用 Chrome DevTools 协议 API 函数来监听javascriptDialogOpening
事件。下面是代码。
我收到一个错误:MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。增加了11Page.javascriptDialogOpening
位听众。使用emitter.setMaxListeners() 增加限制
go - chromedp fails to start a new instance of chrome
Hey guys I have been trying to automate a task on my browser's machine using chromedp.
I tried examples on the repo however they always fail:
unexpected fault address 0x7f7a36461000 fatal error: fault [signal SIGBUS: bus error code=0x2 addr=0x7f7a36461000 pc=0x53a9d5]
Example's source code am running can be found here.
As I understand chromedp comes with headless pre-compiled version of chrome. I have browsed the API documentation to see if it possible to pass a port on which the dev tools is listening, no success.
However when I tried mafredri/cdp it worked. I came to understand that chromedp is failing to start its embedded chrome. Although, I am not really sure. Why is this happening?
My env:
Google Chrome 85.0.4183.102
Ubuntu 18.04.4 LTS
go version go1.13.5 linux/amd64
Any help would be truly appreciated.
javascript - CDP 中未引发 Debugger.paused 事件
我正在尝试使用 Chrome DevTools 协议暂停所有选项卡的执行。为此,我遍历所有选项卡以获取每个选项卡的 CDP 客户端,然后发送请求以在每个选项卡上暂停 JS。我看到它正确解决了某些选项卡,但不是全部。有什么理由会发生这种情况?
我用来暂停并等待暂停事件被触发的代码:
python - Selenium 3 python: add listener for Chrome DevTools network event
I am using Selenium 3 with python. Currently it is possible to send a Chrome DevTools command using the execute_cdp_cmd binding:
Is it possible somehow to add a listener for a Network Event? Something like:
It should be natively supported in Selenium 4 (currently in alpha), but I would like to know if it is possible to make this work in Selenium 3.