我剛開始使用CasperJS,所以我很困擾一個問題。CasperJS截圖不同的網址
我想要做的是加載一個URL(登錄保護),找到一個鏈接列表(它改變了論壇的主題,具體是這個部分:「.styleChooser .overlayScroll li a」),點擊其中的每一個並在兩個分辨率點擊後截屏頁面的結果。
我的代碼目前只是圍繞網絡的其他建議,試圖讓這個工作,但我相信所有必要的代碼基本上是我不能得到它的工作。任何幫助將非常感謝!
var casper = require("casper").create();
var screenshotUrl = "URL Here";
var screenshotPaths = "rivals";
function getLinks() {
var links = document.querySelectorAll('.styleChooser .overlayScroll li a');
links = Array.prototype.map.call(links,function(link){
return link.getAttribute('href');
});
return links;
}
screenshotNow = new Date(),
screenshotDateTime = screenshotNow.getFullYear() + pad(screenshotNow.getMonth() + 1) + pad(screenshotNow.getDate()),
viewports = [
{
'name': 'smartphone-portrait',
'viewport': {width: 320, height: 480}
},
{
'name': 'desktop-standard',
'viewport': {width: 1280, height: 1024}
}
];
i = -1;
casper.start();
casper.setHttpAuth('Username', 'Password');
casper.thenOpen(screenshotUrl, function(response) {
var linksArray = this.evaluate(getLinks);
this.eachThen(linksArray, function(response) {
var url = response.data;
this.each(viewports, function(casper, viewport) {
this.then(function() {
this.viewport(viewport.viewport.width, viewport.viewport.height);
});
this.thenOpen(url, function() {
this.wait(5000);
});
casper.then(function(){
casper.echo('Screenshot for '+ screenshotPaths + '/' + "homepage " + viewport.name + ' (' + viewport.viewport.width + 'x' + viewport.viewport.height + ')', 'info');
casper.capture('screenshots/' + screenshotPaths + '/' + screenshotDateTime + '/' + "homepage" + '/' + viewport.name + '-' + viewport.viewport.width + 'x' + viewport.viewport.height + '.png', {
top: 0,
left: 0,
width: viewport.viewport.width,
height: viewport.viewport.height
});
});
});
});
++i;
}); // error is here
casper.run();
function pad(number) {
var r = String(number);
if (r.length === 1) {
r = '0' + r;
}
return r;
}
這是錯誤:
C:\xampp\htdocs\caspertest>casperjs newestcasper.js
CasperError: You can only define a step as a function
C:/casperjs/modules/casper.js:1755 in then
C:/xampp/htdocs/caspertest/newestcasper.js:52
Unsafe JavaScript attempt to access frame with URL about:blank from frame with U
RL file:///C:/casperjs/bin/bootstrap.js. Domains, protocols and ports must match
.
我不認爲這是它,但你應該嘗試與'this.each'回調中的命名一致。或者將兩個'this'換成casper,或者將一個'casper'換成'this'。 – 2015-01-20 22:50:48
感謝您的提示,我一定會解決這個問題。 – 2015-01-20 23:10:04