C'est une vieille question, mais comme je cherchais un chargement complet de la page pour Spookyjs (qui utilise casperjs et phantomjs) et que je n'ai pas trouvé ma solution, j'ai fait mon propre script pour cela, avec la même approche que l'utilisateur deemstone . Ce que cette approche fait, c'est que pour une quantité de temps donnée, si la page n'a pas reçu ou démarré de requête, elle terminera l'exécution.
Dans 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 :
Au début du fichier avec toutes les variables globales :
var waitResponseInterval = 500
var reqResInterval = null
var reqResFinished = false
var resetTimeout = function() {}
Ensuite, dans 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 ajouter :
resetTimeout()
Faites de même pour "page.onResourceRequested = function onResourceRequested(requestData, request) {"
Enfin, sur "page.onLoadFinished = function onLoadFinished(status) {", à la première ligne, ajoutez :
if(!reqResFinished)
{
return
}
reqResFinished = false
Et c'est tout, j'espère que cela aidera quelqu'un en difficulté comme je l'étais. Cette solution est pour casperjs mais fonctionne directement pour Spooky.
Bonne chance !