Ich habe ein Skript eingerichtet, um Webshots unserer App zu erstellen. Es läuft perfekt und alles ist in Ordnung, bis ich ein Bild mit einem gebrochenen url begegnen:phantomJS Webseite Timeout
"<img src='http://testserver.our.intranet/fetch/image/373e8fd2339696e2feeb680b765d626e' />"
ich es geschafft haben, das Skript nach 6 Sekunden zu brechen die unter Verwendung Bevor es nur immer Looping wurde.
Aber ist es möglich, die Netzwerkanforderung (AKA
nehmen Sie das Bild aus DOM
) zu ignorieren und dann fahren Sie mit dem Daumen ohne das Bild zu erzeugen, (oder mit einem injizierten Bild fehlt Bild!)
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);
}
}
Dies ist eine ausgezeichnete Frage. Wir haben ein ähnliches Problem, außer dass es ein bisschen schwieriger zu lösen ist. Wir haben eine Website des Kunden, die benutzerdefiniertes Javascript hat, das schlecht geschrieben ist. Es scheint zu verursachen Webkit zu hängen. Wir haben eine riesige Auswahl an Websites, die wir testen wollen, aber es funktioniert nicht, wenn die benutzerdefinierte js eines Kunden webkit bricht. Der Timer Obj ist eine gute Lösung, aber ich frage mich, ob jemand eine Diff-Lösung hat. ...? – cliffbarnes