getEventListeners 未在 PuppeteerSharp 中定义

getEventListeners is not defined in PuppeteerSharp

当我尝试在 puppeteerSharp 中使用 getEventListeners 时,出现 getEventListeners is not defined 错误:

var result = await page.EvaluateExpressionHandleAsync("getEventListeners(document.forms[0].getElementsByTagName('button')[0])");

如何在 puppeteerSharp 中使用 getEventListeners

我为 javascript 找到了这个:

const cdp = await page.target().createCDPSession();    
const listeners = await cdp.send('DOMDebugger.getEventListeners', { objectId });

然后我尝试将其转换回 C#:

var t = await page.EvaluateExpressionHandleAsync(@"document.forms[0].getElementsByTagName('button')[0]");
var client = await page.Target.CreateCDPSessionAsync();
var result = await client.SendAsync("DOMDebugger.getEventListeners", t.RemoteObject.ObjectId);

但似乎我做错了什么,我没有找到任何关于此的明确文档。

我已经找到了解决方案,这里是给可能感兴趣的人的:

首先,我们应该像这样创建一个 CDPSession

var client = await page.Target.CreateCDPSessionAsync();

然后我们应该评估我们的脚本以获得一个元素:

var body = await client.SendAsync("Runtime.evaluate", new { expression = "document.getElementsByTagName('input')[0]" });

最后,我们应该使用 DOMDebugger 和元素的 objectId 来得到它的 event listeners:

var result = await client.SendAsync("DOMDebugger.getEventListeners", new { objectId = body["result"]["objectId"] });