Подтвердить что ты не робот

Просмотреть вывод console.log в angular тест-драйв транспортира

Как я могу просмотреть вывод console.log в тестовом экспоненциальном жаргоне? На данный момент браузер слишком быстро закрывается.

Дополнительная информация - Я работаю с учебником angularjs, шаг 8. Я пытаюсь изменить тест e2e на транспортир. Файл конфигурации транспортира, который я использую, основан на% appdata%\npm\ node_modules\protractor\referenceConf.js. В файлах spec js, на которые ссылается файл конфигурации, у меня есть экземпляры console.log. Однако во время выполнения теста e2e транспортира веб-сайт открывается в хроме, я вижу, что все происходит в браузере, затем браузер закрывается, прежде чем я смогу изучить любой вывод console.log. Я думаю, мне нужно как-то сохранить хром. Как?

4b9b3361

Ответ 1

Используйте browser.manage().logs().get('browser')

browser.manage().logs().get('browser').then(function(browserLogs) {
   // browserLogs is an array of objects with level and message fields
   browserLogs.forEach(function(log){
      if (log.level.value > 900) { // it an error log
        console.log('Browser console error!');
        console.log(log.message);
      }
   });
});

Ответ 2

Чтобы открыть окно браузера, вы должны попробовать запустить Protractor в режиме отладки:

$ <route-to-protractor> debug <route-to-conf-file>

Затем в вашем файле спецификации добавьте эту строку, где вы хотите остановить выполнение:

browser.debugger();

В консоли отладчика Protractor вы можете перешагнуть через остановки, набрав c или cont.

Дополнительная информация здесь: https://github.com/angular/protractor/blob/master/docs/debugging.md

Теперь, чтобы получить содержимое консоли, вы можете проверить, как это сделать в FAQ часто задаваемых вопросов: https://github.com/angular/protractor/blob/master/docs/faq.md#how-can-i-get-hold-of-the-browsers-console

Что-то вроде:

browser.manage().logs().get('browser').then(function(browserLog) {
  console.log('log: ' + require('util').inspect(browserLog));
})

Ответ 3

Общее заблуждение console.log будет регистрировать вещи в вашем браузере. Это неверно. Когда вы запускаете свои тесты, наряду с результатами тестов вы также должны видеть значения console.log() и в терминале. Консоль браузера полностью отличается от этого.

Общий пример:

it('get name as John', function(){
        element(by.id('name')).getText().then(function(value){
        console.log(value);
    })
});

Результаты в терминале:

John
get name as John - pass

Надеюсь, что это поможет.

Ответ 4

Теперь это может быть достигнуто без написания специального кода и плагинов:

Ответ 5

Вы также можете изменить уровень ведения журнала, чтобы увидеть другие типы выходов консоли.

Посмотрите мое предлагаемое обновление в faq для транспортира, чтобы сделать это здесь

Ответ 6

Простым вариантом является использование:

browser.pause(); protractor/api/browser.pause

например:

it('should .. test stuff', function() {
    browser.pause(); //--->the automation will pause here - follow the instructions in your terminal to continue 
    //--->your broken testing magic here...
});

Поместите этот метод как первый элемент в теге spec, где вам нужно просмотреть консоль браузеров.

После паузы в браузере вы будете контролировать автоматизацию. Затем вы можете взаимодействовать с браузером, как обычно, проверять элементы в разных состояниях, проверять консоль браузеров и т.д.

Продолжите тесты, введя c для продолжения в вашем терминале - появится приглашение с инструкциями, ожидающими вашей записи.

Ответ 7

Вы всегда можете просто переопределить console.log в своем тесте:)

logMessages = [];

console.log = function(message) {
    logMessages.push(message);
}

Вы также можете использовать $log вместо console.log и использовать такое решение, чтобы помещать некоторые сообщения в сообщения журнала: https://gist.github.com/lrvick/6938531