问题标签 [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.
protractor - 量角器 - 获取 sendChromiumCommand 的结果
目标:获取 chromium 命令执行的结果,例如Profiler报告数据
我所做的:我可以使用browser.driver.sendChromiumCommand
.
例如await browser.driver.sendChromiumCommand('Page.reload', {})
重新加载页面,所以我可以确认这是有效的。
问题:任何命令执行的结果总是null
这是我的代码
注意:问题与特定命令无关,所有devtools 命令都返回null
node.js - NodeJS - 错误:连接 ECONNREFUSED 127.0.0.1:port (chrome-remote-interface)
我使用chrome-launcher和chrome-remote-interface制作了一个脚本,以使用 Chrome 将网页保存为 pdf。
它在我的 Windows 机器上运行没有任何问题,但是当我在 CentOS 7 上尝试它时,我收到以下错误,我不知道为什么。两者都使用 Chrome v86。
在 Windows 上我使用 NodeJS v12.18.4 在 Linux 上我尝试了 v15.1 和 v12.19
SELinux 状态:禁用
我试图检查其他应用程序是否正在使用错误中的端口并且没有。
我的代码:
如果您有其他使用 Chrome 并缩放到 0.7 的方法,请告诉我。
谢谢
chrome-devtools-protocol - Chrome DevTolls 协议的 Fetch.enable 不会导致所有请求都被拦截
我通过 DevTools 协议向正在运行的 Google Chrome 实例发出这样的消息:
我期待它会为页面下载的每个脚本文件引发“Fetch.requestPaused”事件。它仅适用于<head>
页面部分中提供的资源,例如<script src="..."/>
如果<script src="..."/>
包含在页面的任何其他部分(即标题之外),则不会被拦截,并且不会发出“Fetch.requestPaused”事件。任何人都知道如何拦截这些请求(我需要在响应到达浏览器之前对其进行修改)。
r - 如何使用 Chrome DevTools 协议单击元素?
我正在使用 chromote R 包,并且正在使用闪亮的应用程序对其进行测试。我正在尝试单击应该复制几个选择元素的图标。但是当我截屏时,我所拥有的只是工具提示,如果我打开浏览器,它会冻结 R 进程。
这是我的代码:
我不知道如何调试它,也没有太多关于如何点击的信息,我在 GitHub repo for chromote 中发现 dispatchMouseEvent 有问题。
回购链接https://github.com/rstudio/chromote
我想使用 chromote 的原因是我想为我的应用程序创建单元/集成测试,而 shinytest 已经过时了,它使用了几年前被遗弃的 phantomJS(所以你需要使用非常旧的 JavaScript,否则 pantomJS 会抛出错误并进行测试将失败)并且RSelenium也不再维护。
puppeteer - Target.sendMessageToTarget 已弃用——我现在如何使用 devtools 协议的扁平化风格?
现在,我通过将实际消息包装成Target.sendMessageToTarget
消息来向目标发送命令。我认为使用“扁平化”版本我只需要sessionId
在请求中添加作为参数,但这似乎不起作用,例如:
我究竟做错了什么?https://chromedevtools.github.io/devtools-protocol/tot/Target/#method-sendMessageToTarget
google-chrome - DOMDebugger.getEventListeners 不返回 backendNodeId
我按照文档https://chromedevtools.github.io/devtools-protocol/tot/DOMDebugger/#method-getEventListeners尝试了 DOMDebugger.getEventListeners。我可以获得事件侦听器数组,但每个对象中没有 backendNodeId。但我需要 backendNodeId 来获取节点对象。我在这里缺少什么吗?
chrome.debugger.sendCommand({tabId:tabId}, "DOMDebugger.getEventListeners", {objectId, depth: -1}, (listeners) => { console.log(listeners); });
谢谢!
google-chrome-devtools - Chrome DevTools 协议获取域 - getResponseBody - 显然因 HTTP 重定向而失败
我希望收集 HTTP 请求的正文,包括页面重定向到其他地方时。显然,我可以使用非 Fetch 域机制,例如Network.getResponseBody
. 这适用于重定向链中的“最终”页面,但不能用于中间页面,因为 Chrome 在转到下一个重定向目标时似乎会转储内容。
所以,我实现了(使用 PHP,但细节无关紧要,如您所见)。此方法调用不返回错误。然后做 a 之后,我等待一个包含 members 的事件,然后发送a (使用from the ),我得到的响应取决于对页面本身的实际响应是什么。因此,对于 a ,我得到一个响应正文(欢呼),但对于 30x (等),我总是得到带有消息的错误代码。现在,发出该错误消息(在我看来)与Fetch.enable
( { patterns: [ { requestStage: Response } ] } )
Page.navigate
Fetch.requestPaused
requestId
responseStatusCode
responseHeaders
Fetch.getResponseBody
requestId
Fetch.requestPaused
200
301
302
-32000
"Can only get response body on requests captured after headers received"
Fetch.requestPaused
事件数据,即使 Chrome DevTools 协议 (CDP) 并非旨在捕获 HTTP 重定向页面的正文。顺便说一句,带有内容触发重定向(通过 META 元素或 JavaScript)的页面可以被捕获,我认为是因为它们返回 200 状态代码。
那么,问题是我正在遵循的调用顺序还是返回的错误消息中的问题,Fetch.getResponseBody
我是否正确地假设 CDP 不打算捕获重定向链中的文档主体(显然,除了最后一个)?
puppeteer - Page.createIsolatedWorld grantUniveralAccess 标志不授予通用访问权限
我正在尝试使用Runtime.evaluate
. 据我了解文档,这应该可以通过使用+ [1]创建executionContext
具有通用访问权限并将返回的传递给as来实现。Page.createIsolatedWorld
grantUniveralAccess: true
executionContextId
Runtime.evaluate
contextId
有任何想法吗?
chromium-browser --user-data-dir=/tmp/headless --remote-debugging-port=9000
给定从[2]开始的铬工艺。
[1] 我本来希望通用访问权限允许我以与--disable-web-security
标志相同的方式访问跨源资源 - 这在内部授予通用访问权限
[2] 全头运行以便于调试(例如,看到完整的 cors 错误仅打印到控制台)——运行 with--headless
也不起作用。
[3]
[4] 正确的参数名称是grantUniveralAccess(no s
in univeral
)。通过传递类型不正确的值(期望为布尔值)轻松验证
puppeteer - 是什么让执行上下文成为“默认”上下文?
在 Chrome 的 Puppeteer 中,ExecutionContextDescription.auxData
您可以找到一个包含以下属性的对象isDefault
:type
和frameId
frameId
理解起来相当简单,但其他属性似乎没有在任何地方记录。是什么让执行上下文成为默认上下文?在任何给定时间,每个帧的执行上下文不是总是只有一个吗?