casperjs截图返回空白方框。请告诉我获得角色而不是盒子的可能解决方案

时间:2017-02-23 15:19:23

标签: phantomjs casperjs

我正在使用CasperJS 1.1.0和PhantomJs 2.0。我正在使用Linux服务器。 我有一个脚本,试图运行并截取屏幕截图。 此屏幕截图适用于本地服务器或实时。 该网站的屏幕截图如下所示:

https://i.stack.imgur.com/dJe4L.png

因此,它不是实际的字母,而是呈现方框。

var casper = require('casper').create({
    verbose: true,
});
casper.options.waitTimeout = 40000;
casper.options.viewportSize = {width: 1200, height: 768};
phantom.cookiesEnabled = true;
casper.start('http://domain.com/', function() {
    this.wait(5000, function () {
        this.echo(this.getTitle());
        this.capture("screenshot.png");
    });
});
casper.run(function () {
    this.exit(0);
});

请告诉我哪里错了。

1 个答案:

答案 0 :(得分:1)

我会对你想要截图的项目使用waitForSelector,而不是5秒钟的等待。考虑添加

verbose: true
waitTimeout:20000

这将给你20秒的等待限制,超过5秒的默认值。然后,使用类似:

之类的东西,而不是当前的等待
this.waitForSelector('img', function() {
    this.capture('test.png')
}

您可以将img选择器更改为更具体的内容,但等待图像本身加载是确保捕获它们的一种非常确定的方法。我们将超时更改为20秒的原因是他们的网站需要更长时间来加载他们的图像:)

如果这没有帮助,请告诉我,我们乐意跟进。我需要网站的例子和你喜欢的图片。

编辑:可以确认这对我有用,请告诉我它是否适合您。

var casper = require('casper').create({
  verbose: true,
  logLevel: 'error',
  pageSettings: {
    loadImages: true,
    loadPlugins: true,
    userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11'
  },
  clientScripts: ['vendor/jquery.min.js', 'vendor/lodash.js'],
  viewportSize: {
    width: 1600,
    height:1000
  },
});

casper.start('http://dev.bunkerbradleycouture.com/')

casper.then(function() {
  this.waitForSelector('img', function() {
    this.capture('test.png')
  })
})

casper.run()