如何在javascript phantomJS上下文中正确地重新加载网站?

时间:2018-03-30 02:32:51

标签: javascript web-scraping phantomjs screen-scraping ghostdriver

这个问题的目的是排除我的javascript代码中的任何错误,因为我是这种语言的新手。

根据this回答,我使用以下代码在phantomJS上下文中重新加载网站,以防初始加载时间超过某个阈值:

var timer;                                        // Define timeout outside function
this.onLoadFinished = function(){                 // If page is loaded
    window.clearTimeout(timer);                   // Clear timeout function
    console.log("Page loaded - CLEAR timeout");   // Announce cleared timeout
    timer = window.setTimeout(function(){         // And set new timeout
        console.log("SET Timeout for page load"); // Announce set timeout
        window.location.reload();                 // Reload page
        console.log("PAGE reloaded")              // Announce reload
        }, 90000);                                // After 90 sec
    };

在生成的Ghostdriver.log中,我可以看到已设置并清除超时。此外,还指示了重新加载。

然而,重新加载并没有发生,因为我的脚本无限期挂起

phantomjs://platform/console++.js:263 in error
Page loaded - CLEAR timeout
SET Timeout for page load
PAGE reloaded
[INFO  - 2018-03-30T01:40:56.448Z] SessionManagerReqHand - 
      _cleanupWindowlessSessions - Asynchronous Sessions clean-up phase starting NOW
[ERROR - 2018-03-30T01:37:11.140Z] RouterReqHand - 
      _handle.error - {"name":"Missing Command Parameter","message":.....[shortened]

问题

如果在javascript phantomJS 上下文中超时,如何正确重新加载页面?

我尝试过的另一个解决方案是this

this.settings.ressourceTimeout = 90000
this.onRessourceTimeout = function(){
    this.reload();

这也没有成功,原因非常详细地总结here(简而言之,截至phantomJS 1.9.8及其嵌入式Ghostdriver,{{1 } {}不会被resourceTimeout)应用。

0 个答案:

没有答案