1

我想用 CasperJS 模拟鼠标漂移。为此,我想使用 setInterval。间隔在另一个文件中定义,只需使用 require() 即可。我可以执行它,但 Casper 不会等待间隔完成。间隔运行大约 200 毫秒,然后 Casper 继续执行代码。当drift() 完成时,它会调用“完成”回调。

我如何告诉 CasperJS 等到完成()被执行?

casper.waitFor(function () {
  var result = drift({
    ...
    finished: function (x,y) {
      //casper.test.comment('up ' + x + ' ' + y);
      that.mouse.up(x, y);
    }
  }, window);

  return result;
}, function () { /** test here... **/ });

function drift (options, window) {
  interval = setInterval(function () {
    if (counter <= limit) {
      x += stepX;
      y += stepY;
      //call the way callback    
      options.way(x, y);
      counter += 1;
    } else {  
      options.finished(x, y);
      ...
      window.clearInterval(interval);
      returnVal = true;
    }
  }, 50);
  return returnVal;
}

完整的代码在这里:https ://github.com/schickling/Overscroll/blob/testing/test/drift.js 在这里: https : //github.com/schickling/Overscroll/blob/testing/test/modules/漂移-move.js

4

0 回答 0