我想让一个示例脚本允许检查url列表(从csv文件传递)。 Foreach urls,如果url返回错误(404,500 ...),脚本将返回。
所以,经过多次尝试,我差不多这样做但是......我注意到当URL没有退出时(例如http://akljdlkzjlkadz.jhjkhkajzhd),我的casper.open没时间得到错误( 500)在下一个casperjs步骤之前#then'开始。我的意思是:
这是我的函数,包含两个casperjs步骤;
function check(line){
this.then(function(){ //step one
url = line.split("|");
this.echo("TEST0 : "+url[0]);
this.open(url[0]);
});
this.then( function (){ //step two
if (this.currentHTTPStatus === 404){
this.warn("Error 404");
}else if (this.currentHTTPStatus === 500){
this.warn("Error 500");
}else{
this.echo("TEST1 : "+url[0]);
this.echo("TEST2 : "+this.getCurrentUrl());
this.echo("Link OK !");
}
});
}
通过几个this.echo(..),我的终端显示:
TEST0 : http://www.google.com
TEST1 : http://www.google.com
TEST2 : http://www.google.com
LINK OK!
TEST0 : http://www.google.es
TEST1 : http://www.google.es
TEST2 : http://www.google.es
LINK OK!
TEST0 : http://www.google.azerty
TEST1 : http://www.google.azerty
TEST2 : http://www.google.es <----- getCurrentUrl() doesn't return http://www.google.azerty, has no time because this url doesn't exist?
LINK OK!
我尝试了几种方法来解决这个问题。但是我没有找到并理解为什么第二个然后开始,而第一个。然后我就没有完成。
casperjs version : 1.1.0-beta3
phantomjs version : 1.9.7
nodejs version : v0.10.25
我脚本的完整代码;
var casper = require("casper").create({
pageSettings: {
loadImages: false,
loadPlugins: false
}
});
var fs = require('fs');
var csv = casper.cli.get(0);
var url;
function check(line){
this.then(function(){
url = line.split("|");
this.echo("TEST0 : "+url[0]);
this.open(url[0]);
});
this.then( function (){
if (this.currentHTTPStatus === 404){
this.warn("Error 404");
}else if (this.currentHTTPStatus === 500){
this.warn("Error 500");
}else{
this.echo("TEST1 : "+url[0]);
this.echo("TEST2 : "+this.getCurrentUrl());
this.echo("Link OK !");
}
});
}
function main(){
this.then(function(){
var stream = fs.open(csv, 'r');
var line = stream.readLine();
line = stream.readLine();
while(line){
check.call(this, line);
line = stream.readLine();
}
});
}
casper.start().then(main).run();