各反復の間に 3 回 2 秒のループを作成する必要があります。私はこれらの3つのオプションを試しました:
オプション1
var casper = require('casper').create({
verbose: false,
logLevel: 'debug'
});
casper.start("http://google.com");
casper.on('remote.message', function(msg) {
this.echo('remote message caught: ' + msg);
})
casper.thenEvaluate(function() {
var x = 0;
var intervalID = setInterval(function () {
console.log("Using setInternal " + x);
if (++x === 3) {
window.clearInterval(intervalID);
}
}, 2000);
});
casper.run();
観察setInterval
: 最初のスクリプトが呼び出される前にスクリプトが終了したため、何も表示されませんでした。
オプション 2
以下thenEvaluate()
に差し替えthen()
for (i=0; i<3; i++) {
this.wait(2000);
this.echo('Using this.wait ' + i);
}
観察: すぐに 3 回出力し、this.wait()
非同期であるため長時間待機します。間に遅延が必要なので、これは私が望んでいるものではありません。
オプション 3以下
の部品をこれに置き換えthen()
ます。waitFunc()
呼び出されるたびに再帰呼び出しを行うことを考えていましたwait()
。
var count = 0;
var waitFunc = function() {
this.wait(2000, function() {
if (count < 3) {
casper.echo('Using this.wait ' + count);
count++;
waitFunc();
}
});
};
観察: 画面に何も出力されません。
だから私の質問は: this.wait または setInterval をこの場合のように 3 回のループで動作させるにはどうすればよいですか?