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