Не удается захватить журналы консоли браузера при использовании SeleniumWebDriver - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь зафиксировать все ошибки консоли, которые могут возникнуть в браузере во время выполнения моих тестов. Я использую 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» остается пустым.

Есть какие-нибудь идеи о том, что связывание с Консолью не происходит должным образом или что-то не так с моей реализацией здесь?

1 Ответ

0 голосов
/ 06 мая 2019

Этот код:

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>
...