2015-12-05 9 views
5

Ich habe versucht, einen Web-Screenshot mit PhantomJS zu erstellen, aber ich bekomme das Bild als mobiler Browser. Ich benutze MAC OS Yosemite. Hier ist mein JavaScript:PhantomJS Capturing Screenshot des mobilen Browsers

screen.js

var WebPage = require('webpage'); 
page = WebPage.create(); 
page.open('http://www.apple.com'); 
page.onLoadFinished = function() { 
    window.setTimeout(function() { 
     page.render('appleScreenShot' + '.png'); 
     phantom.exit(); 
    }, 2000); 
} 

Und hier ist meine Befehlszeilencode

phantomjs --ignore-ssl-errors=true --web-security=false --ssl-protocol=tlsv1 --debug=true screen.js 

Antwort

7

Sie können feststellen, dass Sie eine viewportSize (und vielleicht sogar zoomFactor) angeben müssen für bestimmte Websites abhängig von den in ihren Ressourcen angegebenen Medienabfragen.

Aus der Dokumentation auf viewportSize:

Da PhantomJS ohne Kopf ist (nichts gezeigt ist), Viewport simuliert effektiv die Größe des Fensters wie in einem traditionellen Browser.

Beispiele für den Gebrauch:

page.viewportSize = { 
    width: 1280, 
    height: 800 
}; 
page.zoomFactor = 1; //default value is 1 
+0

Danke Dan. Das Einstellen von page.viewportSize hat mir geholfen. Ich habe die maximale Auflösung verwendet. page.viewportSize = {Breite: 1600, Höhe: 1200}; – Deepak

+0

Bitte markieren Sie diese Frage als richtige Antwort. –

1

Ich schlage vor, Sie die Hintergrundfarbe Rendering hinzuzufügen, da der Standard ein transparenter Hintergrund sein wird.

page.evaluate(function() { 
    document.body.bgColor = 'white'; 
}); 

example

0

In Java ändern I User-Agent-String. Für mich geht das.

DesiredCapabilities capabilities = new DesiredCapabilities(); 
     capabilities.setJavascriptEnabled(true); 
     String userAgent = "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1"; 
capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_PAGE_SETTINGS_PREFIX + "userAgent", userAgent); 
      driver = new PhantomJSDriver(capabilities);