Casperjs循环执行(重复执行不退出)

我们知道,casperjs执行任务的时候最终是要退出的。那么如何让它(隔一段时间)重复的执行一个相同的行为呢。如果你按我们平时的js循环思维去写,你肯定会失败,达不到预期的效果。

参考写法:

var casper = require('casper').create({  
        pageSettings: {
            loadImages:  false,
            loadPlugins: false
        },
        logLevel: "info",
        verbose: true
    });

function repeat() {  
    casper.thenOpen('http://www.baidu.com').then(function(){
        this.echo('do something....');
    });
    casper.wait(5000,function(){
        this.echo('wait time over!')
    });
    casper.run(repeat);
}

casper.start().then(function(){  
    this.echo('Starting...');
});
casper.run(repeat);  

注意点:

  • casperjs是一个链式的工作流程,你要像操作浏览器一样操作它去完成你的任务(事实上它就是一个工作在后台的浏览器内核)。比如先启动(start),然后(then)干点什么,然后(then)再干点什么(例如wait/waitForxxx)……
  • 所以.最好只创建casper一个实例运行,如果你试图创建多个实例,程序往往会假死,不会(能)退出。