将屏幕尺寸设置为 PhantomJS/CasperJS

Set Screen size in PhantomJS/CasperJS

我正在自动访问网站以从中收集数据。不幸的是,该页面会检测屏幕尺寸,如果屏幕太小,则不会给我所需的页面。当 运行 来自非交互式上下文(IIS Web 应用程序)的脚本时,屏幕对象似乎 return 大小为 1024x768 像素。尽管我将视口大小设置为 1300x1000 像素,这会影响屏幕截图但不会影响网页 JavaScript.

我如何告诉 PhantomJS 或 CasperJS(我使用的是后者,但它使用的是前者)return 页面 JavaScript 中 Screen 对象的不同值?

编辑:这是 CasperJS,而不是 PhantomJS,因此它不是重复的。

下面是它如何与 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

定义函数的时候也可以这样设置:

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

根据 official documentation,您可以使用 viewportSize 选项。

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

与每次加载页面后覆盖视口大小相比,这将是更轻量级的解决方案。

像你这样的另一个选择can see here:

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