Set Screen size in PhantomJS/CasperJS

ygoe picture ygoe · May 18, 2016 · Viewed 7.3k times · Source

I'm automating access to a web site to collect data from it. Unfortunately that page detects the screen size and doesn't give me the desired page if the screen is too small. When running the script from a non-interactive context (IIS web application) the Screen object seems to return a size of 1024x768 pixels. Even though I set the viewport size to 1300x1000 pixels which affects screenshots but not the web page's JavaScript.

How can I tell PhantomJS or CasperJS (I'm using the latter but that's using the former) to return different values for the Screen object in page's JavaScript?

Edit: This is CasperJS, not PhantomJS, so it's not a duplicate.

Answer

Alexander Emelianov picture Alexander Emelianov · Dec 22, 2016

According official documentation you can do it using viewportSize option.

var casper = require("casper").create({
    // other options here
    viewportSize: {
        width: 1920,
        height: 1080
    }
}); 

It will be more lightweight solution than overriding viewport size after each page loading.