如何解决PuppeteerSharp 中未定义 getEventListeners
当我尝试在 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"] });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。