我是 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 onload
或 DOMContentLoaded
吗?
您可以提前关闭此监听器,它只会将 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/