【问题标题】:get list of events associated with a DOM elements获取与 DOM 元素关联的事件列表
【发布时间】:2020-09-29 18:38:50
【问题描述】:

在 Firefox 中,可以在开发人员工具的 Inspect Element 中查看与每个元素相关的事件。

我希望以以编程方式列出与之关联的元素和事件。最好使用 selenium+python。

我知道有getEventListeners函数可以在Chrome的开发者工具中使用,但是在Selenium中无法访问。

我浏览了this question 中提供的大部分解决方案,但没有找到可以解决我的问题的方法。

我的最终目标是迭代给定页面的 throw html 元素并执行每个元素的事件。

【问题讨论】:

  • 出于兴趣,这是测试吗?你在测试什么?
  • @Jacob 好吧,这并不是真正的测试。作为项目的一部分,我需要在每个事件执行后跟踪 DOM 更改。
  • 你能告诉我们页面的网址吗?
  • 为什么不使用 puppeteer?

标签: python selenium google-chrome-devtools puppeteer chrome-devtools-protocol


【解决方案1】:

您可以在一定程度上使用 python + selenium(仅限 Chrome):

body = driver.execute_cdp_cmd("Runtime.evaluate", {"expression": "document.body"})
listeners = driver.execute_cdp_cmd("DOMDebugger.getEventListeners", {"objectId": body["result"]["objectId"]})

【讨论】:

  • 我可以肯定这个解决方案在一定程度上是可行的。例如,它不会检索 React 事件。
【解决方案2】:

未来可能与谁相关!

@pguardiario 提供的 solution 收集了大部分事件,但据我测试此解决方案,ReactjQuery 没有。

为了克服这个问题并收集ReactjQuery 事件,我深入研究了firefox 源代码,发现firefox 使用了某种parser,以显示ReactjQuery事件,同Visual Events 2解决方案。

【讨论】:

    猜你喜欢
    • 2011-10-14
    • 1970-01-01
    • 2015-01-12
    • 2014-01-02
    • 2012-06-09
    • 2017-02-23
    • 1970-01-01
    • 2018-10-25
    • 2018-11-29
    相关资源
    最近更新 更多