如何使用capybara-webkit或本机QtWebKit获取DOM元素单击处理程序?

时间:2012-01-24 07:26:27

标签: qt capybara qtwebkit capybara-webkit

我正在使用capybara-webkit,并希望将事件处理程序绑定到DOM中元素的click事件。甚至使用本机QtWebKit调用的答案可能足以让我弄清楚如何使用Ruby中的webkit驱动程序来完成它。我遇到的挑战是事件处理程序以编程方式绑定在JavaScript中,而不是HTML中,到目前为止我对如何执行此操作的搜索似乎都以如何在QWebView中单击或以其他方式触发事件而结束。我需要检查事件处理程序(即实际的函数定义),特别是绑定到事件的匿名函数,而不生成事件本身。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可以执行任意Javascript并使用page.execute_script返回结果。如果有问题的事件处理程序是使用jQuery绑定的,则会列出它们:

page.execute_script(<<-JAVASCRIPT)
  var handlers = $('.some-selector').data("events").click;
  jQuery.each(handlers, function(key, handler) {
    console.log(handler);
  });
JAVASCRIPT

这里有关于事件处理程序内省的完整答案:How to find event listeners on a DOM node when debugging or from the JavaScript code?