Как получить обработчик щелчка элементов DOM, используя capybara-webkit или собственный QtWebKit? - PullRequest
1 голос
/ 24 января 2012

Я использую capybara-webkit и хотел бы привязать обработчик событий к событию click элемента в DOM. Ответа, даже используя родные вызовы QtWebKit, мне, вероятно, будет достаточно, чтобы понять, как это сделать с помощью драйвера webkit в Ruby. Проблема, с которой я сталкиваюсь, заключается в том, что обработчики событий связаны программно в JavaScript, а не в HTML, и мои поиски того, как это сделать, пока что заканчиваются тем, как нажимать или иным образом вызывать события в QWebView. Мне нужно проверить обработчик события (т.е. фактическое определение функции), в частности анонимные функции, связанные с событием, без генерации самого события. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 03 мая 2012

Вы можете выполнить произвольный 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

Полный ответ по анализу обработчиков событий приведен здесь: Как найти прослушиватели событий на узле DOM при отладкеили из кода JavaScript?

...