Нажмите событие для цикла | я значение всегда последнее значение

Я новичок в 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));
    });
  }
});
Другие вопросы по тегам