ver consola.salida de registro en la prueba de jazmín transportador angular


¿Cómo puedo ver la consola.salida de registro en una prueba de jazmín transportador angularjs? A partir de ahora, el navegador se cierra por sí mismo demasiado rápido.

Más información - Estoy trabajando con el tutorial angularjs, paso 8. Estoy tratando de cambiar la prueba e2e a transportador. El archivo de configuración del transportador que estoy usando se basa en %appdata%\npm\node_modules\protractor \ referenceConf.js. En los archivos spec js referenciados por el archivo de configuración, tengo instancias de consola.registro. Sin embargo, durante la ejecución del transportador e2e prueba, el sitio web se abre en Chrome, veo cosas suceden en el navegador, a continuación, el navegador se cierra antes de que pueda examinar cualquier consola.salida de registro. Creo que necesito mantener Chrome abierto de alguna manera. ¿Cómo?

Author: Bill Swartz, 2014-02-28

7 answers

Use 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's an error log
        console.log('Browser console error!');
        console.log(log.message);
      }
   });
});
 34
Author: Mohsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-25 19:55:55

Esto ahora se puede lograr sin escribir ningún código especial y a través de complementos:

 6
Author: alecxe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-24 01:40:40

Para mantener la ventana del navegador abierta, debe intentar ejecutar Protractor en modo de depuración:

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

Luego en su archivo spec agregue esta línea donde desea que se detenga la ejecución:

browser.debugger();

En la consola Protractor debugger, puede pasar por encima de las paradas escribiendo c o cont.

Más información aquí: https://github.com/angular/protractor/blob/master/docs/debugging.md

Ahora, con el fin de obtener el contenido de la consola se puede comprobar cómo hacerlo en Preguntas frecuentes sobre el transportador: https://github.com/angular/protractor/blob/master/docs/faq.md#how-can-i-get-hold-of-the-browsers-console

Algo como:

browser.manage().logs().get('browser').then(function(browserLog) {
  console.log('log: ' + require('util').inspect(browserLog));
})
 5
Author: pacog,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-21 10:41:15

Un error general es que console.log registrará las cosas en su navegador. Eso es incorrecto. Cuando ejecute sus pruebas, junto con los resultados de las pruebas, debería ver los valores console.log() también en el terminal. La consola del navegador es completamente diferente de esto.

Un ejemplo general:

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

Resultados en la Terminal:

John
get name as John - pass

Espero que ayude.

 5
Author: Sandy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-04 11:07:20

También es posible que desee cambiar el nivel de registro para ver otros tipos de salidas de consola.

Ver mi propuesta de actualización a la faq transportador para hacer esto aquí

 2
Author: user1337489,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-25 16:19:55

Una opción simple es usar:

browser.pause(); transportador/api/navegador.pause

Por ejemplo:

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...
});

Coloque esa llamada al método como el primer elemento en el cuerpo de la especificación donde necesita ver la consola de navegadores.

Después de que el navegador se detenga, tendrá el control de la automatización. A continuación, puede interactuar con el navegador como de costumbre, inspeccionando elementos en diferentes estados, comprobando la consola del navegador, etc.

Continúe las pruebas ingresando c para continúe en su terminal-habrá un aviso con instrucciones esperando su entrada.

 2
Author: mcgraw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-03 19:38:56

Siempre puedes anular la consola.inicie sesión en su prueba:)

logMessages = [];

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

También podría usar log log en lugar de console.registre y use una solución como esta para poner algunos ganchos en los mensajes de registro: https://gist.github.com/lrvick/6938531

 1
Author: rob,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-28 02:38:53