2014-12-02 107 views
2

我正在使用Phantomjs来检查我的应用程序。我所看到的页面包含很多组件,并由Angularjs提供支持。我的测试服务器速度很慢。在onLoadFinished情况下,我使用成像渲染网页:当onLoadFinished触发时,页面未完全加载/呈现

page.onLoadFinished = function(response) { 
    console.log(response, page.url); 
    if (page.url.indexOf("login") == -1) { 
     page.render('zoot.png'); 
     phantom.exit(); 
    } 
}; 

我的问题是,zoot.png仅包括该网站的菜单栏。菜单栏的文本和静态图像被渲染,但图标是X.主页面区域为空白。文本版本号出现在预期的右下角。

看起来render发生时页面未完全绘制。是否有另一个事件意味着“完成并准备好使用”?

回答

2

你可能会找到一种方法here时的角度呈现完毕注册事件,但如果你愿意等待的时间静态量可能不是必要的:

page.onLoadFinished = function(response) { 
    console.log(response, page.url); 
    if (page.url.indexOf("login") == -1) { 
     setTimeout(function(){ 
      page.render('zoot.png'); 
      phantom.exit(); 
     }, 1000); 
    } 
}; 

您还可以使用waitFor明确地等待表示负载结束的选择器的出现。

请注意,page.open(url);page.onLoadFinished = finishedFunction;page.open(url, finishedFunction)相同。

+0

谢谢!我不知道这是否是正确的答案,但它肯定会允许我验证我的怀疑页面尚未完成加载。如果我等几秒钟而没有任何变化,那么就有另一个问题。 – 2014-12-03 00:05:44

+1

如果您不想等待一段时间,也可以使用['waitFor'](https://github.com/ariya/phantomjs/blob/master/examples/waitfor.js)。 – 2014-12-03 00:11:03

+0

我等了10秒。没有改变。我怀疑我没有处理重定向。 – 2014-12-03 13:34:50