這是目前不可能的&我不知道未來是否有可能。 問題是,您必須覆蓋瀏覽器中的console
對象。這意味着,你必須積極改變用戶環境中的某些東西。我不認爲這是一個好主意。
雖然,有可能是你的問題的解決辦法;)
比方說,你寫一個調試功能(作爲客戶端的JavaScript文件)是這樣的:
window.myDebugLog = [];
window.myDebug = function() {
var list = Array.prototype.slice.call(arguments, 0);
window.myDebugLog.push(list);
}
現在,讓我們修改日誌記錄功能的位:
$('#link').on('click', function() {
var msg = 'Click link';
console.log(msg);
window.myDebug(msg);
});
有了這個,你可以訪問&輸出的記錄。更妙的是,使用一些ClojureCompiler或Esprima的樂趣時,您可以在構建生產代碼時解析出調試的東西,這樣就不需要發佈它。
在你Dalek的測試,只是這樣做:
module.exports = {
'Clicked link': function (test) {
test.open('http://localhost/')
.click('#link')
.execute(function() {
this.data('logs', window.myDebugLog);
})
.log.message(function() {
return JSON.stringify(test.data('logs').pop());
})
.done();
}
};
這將使你在命令行輸出的日誌的東西。 如果你不願意添加這個額外的函數調用,你也可以自己覆蓋console.log
。但這可能會導致一些麻煩,所以請帶上一點鹽:
window.myDebugLog = [];
window.oldLog = console.log;
console.log = function() {
var list = Array.prototype.slice.call(arguments, 0);
window.myDebugLog.push(list);
window.oldLog.apply(console, list);
};
希望能幫助你解決問題。