phantom page framework example phantomjs webpage-rendering

page - phantomjs example



phantomJS webpage timeout (1)

PhantomJS 1.9 ha introducido una nueva configuración, resourceTimeout , que controla el tiempo que puede durar una solicitud antes de que se cancele. Junto con eso, hay un evento onResourceTimeout que se activa cuando / cuando una solicitud se agota.

Aquí hay un fragmento de código que ilustra todo lo anterior:

var page = require(''webpage'').create(); page.settings.resourceTimeout = 5000; // 5 seconds page.onResourceTimeout = function(e) { console.log(e.errorCode); // it''ll probably be 408 console.log(e.errorString); // it''ll probably be ''Network timeout on resource'' console.log(e.url); // the url whose request timed out phantom.exit(1); }; page.open(''http://...'', function (status) { ... }

Lamentablemente esas opciones están mal documentadas en este momento. Tuve que pasar por las discussions GitHub y el código fuente de PhantomJS para descubrirlos.

He configurado un script para crear webshots de nuestra aplicación. Funciona perfectamente y todo está bien hasta que encuentro una imagen con una URL rota:

"<img src=''http://testserver.our.intranet/fetch/image/373e8fd2339696e2feeb680b765d626e'' />"

Me las arreglé para romper el script después de 6 segundos usando lo siguiente, antes de que simplemente se repitiera para siempre.

Pero, ¿es posible ignorar la solicitud de red ( AKA sacar la imagen de DOM ) y luego proceder a crear el pulgar sin la imagen (o con una imagen inyectada falta de imagen)?

var page = require(''webpage'').create(), system = require(''system''), address, output, size; if (system.args.length < 3 || system.args.length > 5) { phantom.exit(1); } else { address = system.args[1]; output = system.args[2]; page.viewportSize = { width: 640, height: 640 }; page.zoomFactor = 0.75; page.clipRect = { top: 10, left: 0, width: 640, height: 490 }; try{ page.open(address, function (status) { if (status !== ''success'') { console.log(''Unable to load the address!''); phantom.exit(); } else { window.setTimeout(function () { page.render(output); phantom.exit(); }, 200); } }); } finally{ setTimeout(function() { console.log("Max execution time " + Math.round(6000) + " seconds exceeded"); phantom.exit(1); }, 6000); } }