首先为Selenium设置事件侦听器

Set up event listener for Selenium before everything else

本文关键字:事件 侦听器 设置 Selenium      更新时间:2023-09-26

我是Selenium的新手,但也是一名资深的JS开发人员,我正试图记录在页面的整个生命周期中,某个特定事件对某个元素(比如click)触发的次数。在页面上的其他JS运行之前,有没有办法用Selenium设置一个事件侦听器?

我可以访问jQuery,但我担心在早期的.ready()以编程方式触发click之前,不能保证对.ready()的调用到位。以下是我现在得到的:

(function () {
    var eventLog = [];
    $(document).ready(function () {
        $('#target-element').on('click', trackEvent);
    });
    function trackEvent(e) {
        eventLog.push(e);
    }
})();

您的意思是元素可能还没有呈现,并且您不想等待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);
    });