C'est une vieille question, mais comme je cherchais un chargement complet de la page mais pour Spookyjs (qui utilise casperjs et phantomjs) et que je n'ai pas trouvé ma solution, j'ai créé mon propre script pour cela, avec la même approche que l'utilisateur estime. Ce que fait cette approche, c'est que, pendant une durée donnée, si la page n'a pas reçu ou commencé une demande, elle mettra fin à l'exécution.
Sur le fichier casper.js (si vous l'avez installé globalement, le chemin serait quelque chose comme /usr/local/lib/node_modules/casperjs/modules/casper.js) ajoutez les lignes suivantes:
En haut du fichier avec toutes les variables globales:
var waitResponseInterval = 500
var reqResInterval = null
var reqResFinished = false
var resetTimeout = function() {}
Puis à l'intérieur de la fonction "createPage (casper)" juste après "var page = require ('webpage'). Create ();" ajoutez le code suivant:
resetTimeout = function() {
if(reqResInterval)
clearTimeout(reqResInterval)
reqResInterval = setTimeout(function(){
reqResFinished = true
page.onLoadFinished("success")
},waitResponseInterval)
}
resetTimeout()
Puis à l'intérieur de "page.onResourceReceived = function onResourceReceived (resource) {" sur la première ligne, ajoutez:
resetTimeout()
Faites de même pour "page.onResourceRequested = function onResourceRequested (requestData, request) {"
Enfin, sur "page.onLoadFinished = function onLoadFinished (status) {" sur la première ligne, ajoutez:
if(!reqResFinished)
{
return
}
reqResFinished = false
Et c'est tout, j'espère que celui-ci aidera quelqu'un en difficulté comme moi. Cette solution est pour casperjs mais fonctionne directement pour Spooky.
Bonne chance !