Chrome 远程调试 - 获取页面通知
Posted
技术标签:
【中文标题】Chrome 远程调试 - 获取页面通知【英文标题】:Chrome Remote Debugging - Getting Page Notifications 【发布时间】:2014-06-24 02:48:32 【问题描述】:我正在远程调试 Chrome,使用 --remote-debugging-port
开关并运行另一个我正在使用 Web 套接字进行调试的 Chrome 实例。这与我在网上看到的大多数使用 node.js 进行调试的示例有点不同。
我需要导航到一个页面,然后评估其中的一些代码。使用此代码,这两个操作都按预期工作,我在第二个 Chrome 实例的页面中运行:
var socket = new WebSocket(url);
function debug(action, data)
var msg;
switch (action)
case 'NAVIGATE':
msg = 'id':1001, 'method':'Page.navigate', 'params':'url':data.urlToNavigate;
break;
case 'EVALUATE':
msg = 'id':1002, 'method':'Runtime.evaluate', 'params':'expression':data.jsCodeToEvaluate;
break;
socket.send(JSON.stringify(msg));
我遇到的问题是获取notifications。我只想在导航完成后评估代码(比如说,在文档加载之后)。我通过以下方式在套接字上获取消息,但据我了解,当导航命令已由调试页面启动/接收时,而不是在导航完成时接收到 Page.navigate
方法的返回消息。
socket.onmessage = function (event)
var data = JSON.parse(event.data);
switch (data.id)
case 1001:
//A navigation command to app page has been received but not yet navigated
break;
;
如何使用通知来创建流程,例如:导航 > 等待导航完成 > 评估一些代码?我无法收到任何通知。
【问题讨论】:
【参考方案1】:问题是通知未启用。要启用通知:
socket.send(JSON.stringify('id':12345, 'method':'Page.enable'));
然后,以这种方式接收通知:
socket.onmessage = function (event)
var data = JSON.parse(event.data);
switch (data.method)
case 'Page.frameNavigated':
console.log('Navigation completed');
break;
//....
运行时通知 (Runtime.enable
)、网络通知等也是如此......
【讨论】:
以上是关于Chrome 远程调试 - 获取页面通知的主要内容,如果未能解决你的问题,请参考以下文章