javascript - 首先为 Selenium 设置事件监听器

标签 javascript jquery selenium

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

我可以访问 jQuery,但我担心对 .ready() 的调用不能保证在较早的 .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()方法提供的委托(delegate)。 - 这么短 -

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

关于javascript - 首先为 Selenium 设置事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22972168/

相关文章:

python - 键盘无法访问 Selenium 元素

javascript - 如何获取单击按钮的数据属性值?

javascript - 为什么按钮不显示(标题上的减号按钮)?

javascript - async/await 转换为 Promise.resolve 然后

jquery - 为什么 DataTables 渲染函数被调用 3 次?

python - 在 Selenium 中一次加载多个 URL

excel - 创建 Keywork/Page Object 框架 : Selenium or Protractor?

javascript - 实现下拉选项

jQuery - 无法计算页面加载时的元素宽度?

javascript - 使用 onClick 函数将视频帧从 jPlayer 扩展到全屏