// Call Console.enable in the DevTools Protocol to activate the Console domain
EdgeBrowser1.DefaultInterface.CallDevToolsProtocolMethod('Console.enable', '{}', nil);
// Subscribe to the Console.messageAdded event
EdgeBrowser1.SubscribeToCDPEvent('Console.messageAdded');
1条答案
按热度按时间ykejflvf1#
为了在浏览器中接收
console
对象中使用console.log
或其他方法创建的日志消息,您需要在一般启用Runtime
域后订阅Runtime.consoleAPICalled
事件。之后,您将通过
TEdgeBrowser
中的DevToolsProtocolEventReceived
事件接收事件。例如,下面的代码在浏览器中执行
将产生以下输出:
备注:奇怪的是,这段代码不适用于那些自己捕获控制台日志输出的网站,比如jsfiddle或codepen。这似乎是微软自己的WebView2控件中的一个错误,因为在C#应用程序中使用Microsoft WebView2控件时也会发生同样的情况。
我已通过https://github.com/MicrosoftEdge/WebView2Feedback/issues/3784向Microsoft报告了此问题
为了不仅捕获由显式使用
console.log
等的文档创建的控制台消息,还捕获由浏览器创建的警告或错误消息,请在启用Log
域后额外订阅Log.entryAdded
事件。这将导致如下输出:
请注意,尽管名称为
Log.entryAdded
,但此事件不是针对通过JavaScript通过console
对象生成的输出生成的。