Это старый вопрос, но так как я искал полную загрузку страницы, но для Spookyjs (которая использует casperjs и phantomjs) и не нашел своего решения, я сделал для этого свой собственный скрипт, с тем же подходом, что и пользователь deemstone. Этот подход в течение определенного периода времени, если страница не получила или не запустила какой-либо запрос, завершит выполнение.
В файле casper.js (если вы установили его глобально, путь будет выглядеть примерно так: /usr/local/lib/node_modules/casperjs/modules/casper.js) добавьте следующие строки:
В верхней части файла со всеми глобальными переменными:
var waitResponseInterval = 500
var reqResInterval = null
var reqResFinished = false
var resetTimeout = function() {}
Затем внутри функции "createPage (casper)" сразу после "var page = require ('webpage'). Create ();" добавьте следующий код:
resetTimeout = function() {
if(reqResInterval)
clearTimeout(reqResInterval)
reqResInterval = setTimeout(function(){
reqResFinished = true
page.onLoadFinished("success")
},waitResponseInterval)
}
resetTimeout()
Затем внутри "page.onResourceReceived = function onResourceReceived (resource) {" в первой строке добавьте:
resetTimeout()
Сделайте то же самое для "page.onResourceRequested = function onResourceRequested (requestData, request) {"
Наконец, на странице «page.onLoadFinished = function onLoadFinished (status) {» в первой строке добавьте:
if(!reqResFinished)
{
return
}
reqResFinished = false
И это все, надеюсь, что это поможет кому-то в беде, как я. Это решение для casperjs, но работает напрямую для Spooky.
Удачи !