我想用 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