【问题标题】:Unable to capture browser console logs when using SeleniumWebDriver使用 Selenium WebDriver 时无法捕获浏览器控制台日志
【发布时间】:2019-05-05 21:45:32
【问题描述】:

我正在尝试捕获运行测试时在浏览器中发生的所有控制台错误。我正在使用 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”数组仍然为空。

关于与控制台的绑定是否未正确发生或我在这里的实现是否有其他问题的任何想法?

【问题讨论】:

  • 欢迎来到 SO!你能提供你的webdriver代码吗?这似乎不是minimal reproducible example,所以我不确定问题和预期输出是什么。

标签: javascript selenium selenium-webdriver browser


【解决方案1】:

这段代码:

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>

【讨论】:

    猜你喜欢
    • 2014-10-15
    • 2017-10-03
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 2015-04-12
    相关资源
    最近更新 更多