ygoe
ygoe

Reputation: 20414

Set Screen size in PhantomJS/CasperJS

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.

Upvotes: 3

Views: 7517

Answers (4)

mrroot5
mrroot5

Reputation: 1971

Another option like you can see here:

casper.options.viewportSize = {width: 1600, height: 950};

Upvotes: 1

Alexander Emelianov
Alexander Emelianov

Reputation: 598

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.

Upvotes: 10

Prateek.Naik
Prateek.Naik

Reputation: 556

You can set by this as well while defining functions:

casper.viewport(1300, 1000).then(function () {
     test.assertUrlMatches(/testing\.html$/);
});

Upvotes: -1

ygoe
ygoe

Reputation: 20414

Here's how it works with CasperJS:

// at the start of the script file
var casper = require("casper").create({
    // other options here
    onPageInitialized: function (page) {
        page.evaluate(function () {
            window.screen = {
                width: 1920,
                height: 1080
            };
        });
    }
});

// script goes on here

Upvotes: 3

Related Questions