我正在使用 capybara-webkit 并希望将事件处理程序绑定到 DOM 中元素的单击事件。即使使用本机 QtWebKit 调用的答案也可能足以让我弄清楚如何使用 Ruby 中的 webkit 驱动程序来做到这一点。我面临的挑战是事件处理程序是在 JavaScript 中以编程方式绑定的,而不是在 HTML 中,到目前为止,我对如何执行此操作的搜索似乎都以如何单击或以其他方式触发 QWebView 中的事件结束。我需要检查事件处理程序(即实际函数定义),特别是绑定到事件的匿名函数,而不生成事件本身。任何帮助表示赞赏。
问问题
1218 次
1 回答
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 debug or from the JavaScript code?
于 2012-05-03T03:55:51.223 回答