我正在尝试捕获在运行测试时浏览器中将发生的所有控制台错误。我正在使用Selenium Webdriver来模拟浏览器。
console.log = console.log.bind(console);
console.logs = [];
console.log = function() {
console.logs.push(Array.from(arguments));
console.log.apply(console, arguments);
};
但是,当我运行与浏览器相关的测试时,我无法在“日志”中捕获日志。
当我使用纯JavaScript测试我的代码时,我看到我可以得到一些输出,但是在这种情况下,“ logs”数组仍然为空。
是否有任何关于与Console的绑定未正确进行或在我的实施中是否存在其他问题的想法?
答案 0 :(得分:0)
此代码:
var con = console.log.bind(console);
con("pepe");
等效于:
console.log("pepe");
您想做的事,我认为可以通过以下方式完成:
var originalLog = console.log;
var logs = [];
console.log = function() {
logs.push(arguments);
originalLog.apply(this, arguments);
};
console.log("a");
console.log("b");
console.log("c");
// Lets print what logs is holding
$( document ).ready(function() {
jQuery.each(logs, function(){
var elem = $(this)[0];
$("#divLog").append($('<div>' + elem + '</div>'));
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="divLog"></div>