在onLoadFinished触发时,页面未完全加载/呈现

时间:2014-12-02 23:04:03

标签: javascript angularjs phantomjs

我使用Phantomjs来检查我的应用程序。我正在查看的页面包含很多组件,由Angularjs提供支持。我的测试服务器很慢。在onLoadFinished事件中,我使用render:

对网页进行成像
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发生时,看起来页面未完全绘制。还有其他事件意味着已经完成并准备好使用"?

1 个答案:

答案 0 :(得分:3)

当角度完成渲染时,您可能会找到一种方法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)相同。