我是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);
}
})();
答案 0 :(得分:0)
您的意思是该元素可能尚未呈现,并且您不想等待body onload
或DOMContentLoaded
?
你可以提前关闭这个监听器,只有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);
});