To stare pytanie, ale ponieważ szukałem pełnego załadowania strony, ale Spookyjs (który używa casperjs i phantomjs) i nie znalazłem swojego rozwiązania, stworzyłem własny skrypt, z tym samym podejściem, jakie uważa użytkownik. To podejście polega na tym, że przez określony czas, jeśli strona nie otrzymała lub nie rozpoczęła żadnego żądania, zakończy wykonywanie.
W pliku casper.js (jeśli zainstalowałeś go globalnie, ścieżka wyglądałaby tak, jak /usr/local/lib/node_modules/casperjs/modules/casper.js) dodaj następujące wiersze:
U góry pliku ze wszystkimi globalnymi zmiennymi:
var waitResponseInterval = 500
var reqResInterval = null
var reqResFinished = false
var resetTimeout = function() {}
Następnie wewnątrz funkcji "createPage (casper)" zaraz po "var page = require ('webpage'). Create ();" dodaj następujący kod:
resetTimeout = function() {
if(reqResInterval)
clearTimeout(reqResInterval)
reqResInterval = setTimeout(function(){
reqResFinished = true
page.onLoadFinished("success")
},waitResponseInterval)
}
resetTimeout()
Następnie wewnątrz „page.onResourceReceived = function onResourceReceived (resource) {” w pierwszym wierszu dodaj:
resetTimeout()
Zrób to samo dla "page.onResourceRequested = function onResourceRequested (requestData, request) {"
Na koniec w „page.onLoadFinished = function onLoadFinished (status) {” w pierwszym wierszu dodaj:
if(!reqResFinished)
{
return
}
reqResFinished = false
I to wszystko, mam nadzieję, że ten pomoże komuś w tarapatach, tak jak ja. To rozwiązanie jest przeznaczone dla casperjs, ale działa bezpośrednio dla Spooky.
Powodzenia !