Нажмите событие для цикла | я значение всегда последнее значение
Я новичок в CasperJS.
Я хочу пройтись по всем ссылкам на ul и нажать на каждую li. При нажатии на li появляется модальное окно, и я сохраняю модальные данные. Но значение 'i' внутри цикла всегда является конечным значением.
У меня есть 5 лис на ул.
Следующий цикл всегда щелкает 5-й li 5 раз и сохраняет модальные данные 5 раз при нажатии 5-й li.
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));
});
}
});
Я гуглил и обнаружил, что мы должны завернуть назначение слушателя события в закрытие. Но это ничего не отражает.
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
}
});
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));
});
}
});