我正在使用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);
});
请告诉我哪里错了。
答案 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()