在其他所有事情之前为Selenium设置事件监听器

时间:2014-04-09 19:26:12

标签: javascript jquery selenium

我是Selenium的新手,但是一位经验丰富的JS开发人员,而且我试图记录一个特定事件多次在一个元素上开始(假设click)在整个生命周期中这页纸。有没有办法在页面上的其他JS运行之前用Selenium设置事件监听器?

我可以访问jQuery,但我担心在早先的.ready()以编程方式触发.ready()之前,无法确保调用click。这就是我现在所拥有的:

(function () {
    var eventLog = [];

    $(document).ready(function () {
        $('#target-element').on('click', trackEvent);
    });

    function trackEvent(e) {
        eventLog.push(e);
    }
})();

1 个答案:

答案 0 :(得分:0)

您的意思是该元素可能尚未呈现,并且您不想等待body onloadDOMContentLoaded

你可以提前关闭这个监听器,只有push到你的阵列才能点击#target-element

  $(document).on('click',function(e) {
       if(e.target.id==='target-element') {
         eventLog.push(e);
      }
    });


事实上,在发布之后才意识到可以使用on()方法提供的委托。 - 这么短 -

  $(document).on('click','#target-element',function(e) {
         eventLog.push(e);
    });