1

capybara-webkitを使用していて、イベントハンドラーをDOM内の要素のクリックイベントにバインドしたいと思います。ネイティブのQtWebKit呼び出しを使用した場合でも、RubyのWebkitドライバーを使用してそれを行う方法を理解するにはおそらく十分でしょう。私が抱えている課題は、イベントハンドラーがHTMLではなくJavaScriptでプログラムによってバインドされていることです。これを行う方法に関するこれまでの検索は、QWebViewでイベントをクリックまたはトリガーする方法で終わっているようです。イベント自体を生成せずに、イベントハンドラー(つまり、実際の関数定義)、特にイベントにバインドされた無名関数を検査する必要があります。どんな助けでも大歓迎です。

4

1 に答える 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 debugging or from the JavaScript code?

于 2012-05-03T03:55:51.223 に答える