我是CasperJS初学者。
我想遍历ul的所有li并点击每个li。单击li时,会弹出一个模态并保存模态数据。但是' i'的价值循环内部始终是结束值。
我在ul中有5个l
以下循环总是点击第5个li 5次,并在点击第5个li时保存模态数据5次。
casper.then(function() {
a = lis.length;
this.echo(a + ' lis found');
for(var i = 1; i <= a; i++ ) {
this.echo(i + ' now');
this.click('.hello:nth-child('+ i +')' );
casper.waitUntilVisible('.modal__content ', function() {
console.log('Open Modal');
links = links.concat(this.evaluate(getLinks));
});
}
});
我用google搜索并发现我们应该在闭包中包装事件监听器的赋值。但这并没有回应任何事情。
casper.then(function() {
a = lis.length;
this.echo(a + ' lis found');
for(var i = 1; i <= a; i++ ) {
(function(i){ // Added this line
this.echo(i + ' now');
this.click('.hello:nth-child('+ i +')' );
casper.waitUntilVisible('.modal__content ', function() {
console.log('Open Modal');
links = links.concat(this.evaluate(getLinks));
});
})(i); // Added this line
}
});
答案 0 :(得分:1)
更改点击然后点击解决了问题:)
casper.then(function() {
a = lis.length;
this.echo(a + ' lis found');
for(var i = 1; i <= a; i++ ) {
this.echo(i + ' now');
this.thenClick('.hello:nth-child('+ i +')' ); // Changed to thenClick from click
casper.waitUntilVisible('.modal__content ', function() {
console.log('Open Modal');
links = links.concat(this.evaluate(getLinks));
});
}
});