tutorial node alternative phantomjs

node - phantomjs selenium



DepuraciĆ³n de las fallas de PhantomJS webpage.open (1)

En PhantomJS, webpage.open toma una devolución de llamada con un parámetro de estado establecido en ''éxito'' o ''error''. De acuerdo con los documentos, será "exitoso" si no se produjeron errores de red, de lo contrario "falla". ¿Hay alguna forma de ver el error de red subyacente que causó la falla?

La URL que trato de cargar funciona bien cuando la pongo en mi navegador, y cuando tomo una captura de pantalla después de recibir el mensaje ''falla'', veo la página en la que estaba antes de llamar a webpage.open (para que pueda '' solo ignoro el error). Estoy usando Phantom para probar, así que idealmente me gustaría una forma robusta de obtener fácilmente un mensaje de error útil cuando falla webpage.open (¡o mejor aún, nunca falla!)


Encontré esta publicación que explica cómo configurar devoluciones de llamada para conocer el motivo subyacente de la falla: http://newspaint.wordpress.com/2013/04/25/getting-to-the-bottom-of-why-a-phantomjs-page-load-fails/

En función de esa página, puede imprimir los errores de la siguiente manera:

page.onResourceError = function(resourceError) { console.error(resourceError.url + '': '' + resourceError.errorString); };

La página continúa para mostrar un ejemplo de registro detallado de fantasmas

page.onResourceRequested = function (request) { system.stderr.writeLine(''= onResourceRequested()''); system.stderr.writeLine('' request: '' + JSON.stringify(request, undefined, 4)); }; page.onResourceReceived = function(response) { system.stderr.writeLine(''= onResourceReceived()'' ); system.stderr.writeLine('' id: '' + response.id + '', stage: "'' + response.stage + ''", response: '' + JSON.stringify(response)); }; page.onLoadStarted = function() { system.stderr.writeLine(''= onLoadStarted()''); var currentUrl = page.evaluate(function() { return window.location.href; }); system.stderr.writeLine('' leaving url: '' + currentUrl); }; page.onLoadFinished = function(status) { system.stderr.writeLine(''= onLoadFinished()''); system.stderr.writeLine('' status: '' + status); }; page.onNavigationRequested = function(url, type, willNavigate, main) { system.stderr.writeLine(''= onNavigationRequested''); system.stderr.writeLine('' destination_url: '' + url); system.stderr.writeLine('' type (cause): '' + type); system.stderr.writeLine('' will navigate: '' + willNavigate); system.stderr.writeLine('' from page/'s main frame: '' + main); }; page.onResourceError = function(resourceError) { system.stderr.writeLine(''= onResourceError()''); system.stderr.writeLine('' - unable to load url: "'' + resourceError.url + ''"''); system.stderr.writeLine('' - error code: '' + resourceError.errorCode + '', description: '' + resourceError.errorString ); }; page.onError = function(msg, trace) { system.stderr.writeLine(''= onError()''); var msgStack = ['' ERROR: '' + msg]; if (trace) { msgStack.push('' TRACE:''); trace.forEach(function(t) { msgStack.push('' -> '' + t.file + '': '' + t.line + (t.function ? '' (in function "'' + t.function + ''")'' : '''')); }); } system.stderr.writeLine(msgStack.join(''/n'')); };