javascript - Guardar los mensajes de la consola para la depuración en nightwatch.js
(2)
¿Cómo puedo obtener todos los mensajes de la consola en la depuración de nightwatch.js?
En phantom es posible usar el controlador page.onError
. ¿Puedo hacer lo mismo con Nightwatch?
Sé acerca de window.onerror
pero ¿hay alguna forma de guardar todos los mensajes de la consola?
¿Alguien puede compartir configuración / código de trabajo?
Primero asegúrese de configurar loggingPrefs en {''browser'': ''ALL''} en su configuración de Nightwatch, de lo contrario no verá las entradas en la consola del navegador que fueron escritas con console.log. Mi nightwatch.conf.js se ve algo así como:
desiredCapabilities: {
browserName: ''chrome'',
handlesAlerts: true,
loggingPrefs: { ''browser'': ''ALL'' }
}
A continuación, como han dicho los demás, solo tiene que usar la función incorporada getLog en el cliente. p.ej
browser.getLog(''browser'', function(logEntriesArray) {
console.log(''Log length: '' + logEntriesArray.length);
logEntriesArray.forEach(function(log) {
console.log(''['' + log.level + ''] '' + log.timestamp + '' : '' + log.message);
});
});
Solución:
module.exports = {
''Check getting log messages'' : function (client) {
client
.url(''http://jsbin.com/rohilugegi/1/'')
.getLogTypes(function(result) {
console.log(result);
})
.getLog(''browser'', function(result) {
console.log(result);
})
;
return client;
},
Dará salida
[Start] Test Suite ================== Running: Check getting log messages [ ''har'', ''browser'', ''client'', ''server'' ] [ { message: ''Test error/n error (:0)'', timestamp: 1428447687315, level: ''WARNING'' }, { message: ''Test log (:)'', timestamp: 1428447687315, level: ''INFO'' } ] No assertions ran.
Los comandos getLogTypes y getLog ya están implementados en los comandos del cliente, pero su descripción está ausente en la API del sitio
Parece que vale la pena leer el código fuente en lugar de la documentación
Debajo de jsdoc para estas funciones del código fuente:
/**
* Gets the available log types
*
* ```
* this.demoTest = function(client) {
* this.getLogTypes(function( typesArray ) {
*
* });
* };
* ```
*
* @method getLogTypes
* @param {function} [callback] Optional callback function to be called when the command finishes.
* @api commands
* @see logTypes
*/
y
/**
* Gets a log from selenium
*
* ```
* this.demoTest = function(client) {
* this.getLog( ''browser'', function( logEntriesArray ) {
* console.log( "Log length: " + logEntriesArray.length );
* logEntriesArray.forEach( function( log ) {
* console.log( "[" + log.level + "] " + log.timestamp + " : " + log.message );
* } );
* });
* };
* ```
*
* @method getLog
* @param {string} typeString Log type to request
* @param {function} [callback] Optional callback function to be called when the command finishes.
* @api commands
* @see log
*/