简短的回答?没有什么。
长答案:
为了找出触发脚本的元素,您需要知道执行了哪些将侦听器附加到每个元素的 Javascript。为了做到这一点,您必须能够执行 Javascript。WATIR 和 Nokogiri 不自己执行 Javascript。WATIR 使用将在内部执行 JavaScript 的浏览器。Watir-webdriver 使用基于 Java 的浏览器模拟器 (Selenium),它还有一个 JavaScript 执行器,它将执行页面的 javascript。Nokogiri 根本不执行 JavaScript。
因此,您需要注入一些您自己的 Javascript 来“读取”哪些侦听器附加到特定元素。这并不容易,因为您无法控制 JavaScript 环境。但是,即使您找到了这样做的方法,但事实证明,W3C DOM 接口没有提供标准方法来找出哪些事件侦听器附加到特定元素。像 JQuery 这样的单个 JavaScript 库会缓存它们的侦听器,但每个库都以自己的方式进行。
所以换句话说,这变得非常复杂。
一个可能的解决方案
以下都是猜想,但如果你真的想在 Ruby 的土地上获取这些信息,这给了你一些尝试。
首先,您需要一种将 JS 注入页面并获得结果的方法。这可能使用 watir-webdriver 来实现,因为 Selenium 有钩子可以做到这一点。有关如何注入 JS 并将结果返回给 Selenium 中的调用者的说明,请参阅本页的最后。另一个选择是PhantomJS,它是一个带有 JS API 的无头浏览器。
其次,您需要找到一个 JavaScript 库,该库了解每个流行的 JS 库如何缓存其侦听器并可以收集信息。为此,您可以尝试Visual Event 2。
您仍然需要将这些东西连接起来,这需要一些 JS 黑客技术。祝你好运。