使用SeleniumWebDriver时无法捕获浏览器控制台日志

时间:2019-05-05 21:45:33

标签: javascript selenium selenium-webdriver browser

我正在尝试捕获在运行测试时浏览器中将发生的所有控制台错误。我正在使用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的绑定未正确进行或在我的实施中是否存在其他问题的想法?

1 个答案:

答案 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>