如果你包裹自己的包裝API中的附加事件監聽器,你可以在你的自動化測試環境中執行時,很容易修改的事件對象。
function attachEventListener(node, event, handler) {
// only do this if we are running in the test environment
if (window.__runningAutomatedTests) {
// wrap the event handler in a handler that will
// amend the event object
handler = (function(innerHandler) {
return function(evt) {
// invoke the actual event handler
var result = innerHandler.apply(this, arguments);
// amend the event object with information
// about that one of our event handlers handled
// it
evt.__wasHandled = true;
return result;
}
})(handler);
}
node.addEventListener(event, handler);
return function removeEventListener() {
node.removeEventListener(event, handler);
};
}
attachEventListener(window.document.body, 'click', function(evt) {
if (evt.__wasHandled) {
// event was handled by a different handler before!
}
});
我不明白,如果不掛鉤到較低級別的事件處理程序,這將如何工作。
您可以將事件偵聽器放在頁面上的測試對象上(可能是右下角),並且只有在成功獲取測試對象的點擊後纔開始播放常規的點擊事件? – jfriend00