我是Casperjs的新手,我想根据外部数据源进行dinamic测试。但是,我遇到了一些循环问题。
这是我的代码:
var url = ['http://google.com/','http://www.as.com'];
casper.test.begin('PruebaLoop', function (test) {
casper.start('about:blank',function() {
});
casper.then(function() {
casper.viewport(1024, 768);
//casper.echo(casper.getTitle());
});
console.log('url.length: ' + url.length)
for (i = 0; i < url.length; i++) {
casper.thenOpen(url[i], function() { // open that link
console.log('i: '+i);
});
casper.wait(5000, function() {
this.echo("I've waited for a 5 seconds.");
});
casper.then(function() {
casper.capture('url'+i+'.png');
});
}
casper.run(function() {
casper.echo('Test completado');
casper.test.done();
});
});
从调试开始,我总是得到2。我不知道为什么。你能帮我一下吗?
非常感谢!
答案 0 :(得分:1)
我的解决方案是:
var urls = ['http://www.elpais.es','http://www.as.com'];
casper.test.begin('PruebaLoop', function (test) {
casper.start('auto:blank',function() {
console.log("-----------------------------------");
console.log("estoy en start ");
});
casper.then(function() {
casper.viewport(1024, 768);
console.log("estoy en wiewport");
console.log("urls.length = " + urls.length);
console.log("-----------------------------------");
});
for(i = 0; i < urls.length; i++) {
(function(index) {
var url = urls[index]
casper.thenOpen(url, function() {
console.log('index tiene el valor: '+ index);
console.log('i tiene el valor: '+ i);
});
casper.then(function() {
this.wait(5000);
console.log("estoy en wait: "+ index);
});
casper.then(function() {
this.wait(5000);
casper.capture("pagina"+index+".png");
console.log("estoy en capture: " + index);
console.log("-----------------------------------");
});
})(i);
}
casper.run(function() {
casper.echo('Test completado');
casper.test.done();
});
});
它有效。