PhantomJS不会呈现整页内容

时间:2017-05-22 18:26:41

标签: javascript phantomjs automated-tests rendering headless-browser

我是PhantomJS的新手并使用最基本的代码:获取Google网页并捕获屏幕截图。

我尝试提取的网址是:https://www.google.com/#tbm=lcl&q=starbucks

如果您在真实浏览器中打开它,您会看到它如下所示:

enter image description here

但是我的PhantomJS看到了这个:

enter image description here

起初,我认为异步网页内容加载速度太慢,所以我设法等待很多秒然后捕获屏幕,但我看到PhantomJS仍无法获取内容。

这是我的代码段:

var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36';
page.viewportSize = { width: 1280, height: 800 };

page.open('https://www.google.com/#tbm=lcl&q=starbucks', function() {

  setTimeout(function(){
    page.render('screenshot_failed.png');
    phantom.exit();
  }, 5000);
});

请指出我在获取此网页时可能会遗漏的内容。谢谢!

1 个答案:

答案 0 :(得分:0)

除了您已经拥有的所有代码之外,请尝试在打开的回调中强制页面达到您想要的大小:

var width = 1280;
var height = 800;
var webpage = require('webpage');

page.open('https://www.google.com/#tbm=lcl&q=starbucks', function(status) {
    page.evaluate(function(w, h) {
      document.body.style.width = w + "px";
      document.body.style.height = h + "px";
    }, width, height);
    page.clipRect = {top: 0, left: 0, width: width, height: height};                                                                                                                           
    page.render('screenshot_failed.png');
});