我正在使用 Phantomjs 来检查我的应用程序。我正在查看的页面包含很多组件,并且由 Angularjs 提供支持。我的测试服务器很慢。在 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。主页区域是空白的。文本版本号出现在预期的右下角。
渲染发生时页面似乎尚未完全绘制。是否还有另一个事件表示“完成并可供使用”?
最佳答案
你可能会找到一种方法here当 Angular 完成渲染时注册一个事件,但如果您愿意等待一段静态时间,则可能没有必要:
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)
相同.
关于javascript - onLoadFinished 触发时页面未完全加载/渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27260702/