Casperjs并不总是执行一些步骤

时间:2014-02-27 14:19:19

标签: javascript phantomjs casperjs

Casperjs有一些奇怪的行为。当我执行我的代码时,最后的then步骤并不总是被调用。我真的不知道为什么。

代码

var casper = require('casper').create({
    verbose: true,
    logLevel: 'debug'
});

 login = 'user';
 password = 'password';
 baseURL = 'http://fr.bazarchic.com';

function getHomepageLinks() {
    console.log('hello');
    return Array.prototype.map.call(document.querySelectorAll('.label_big a'), function(e) {
        return e.getAttribute('href');
    });
}

casper.start(baseURL, function(){
    this.fill('form[action="/login/"]', {
    'email' : login,
    'pass' : password
    }, true)
});

casper.then(function() {
    ventesLinks = this.evaluate(getHomepageLinks);

});

casper.then(function() {
    this.echo(ventesLinks);
    this.eachThen(ventesLinks, function(response){
        this.echo(response.data);
    })
})



casper.run(function() {

});

由于

1 个答案:

答案 0 :(得分:0)

如果你真的需要拆分这两个步骤,那么你应该使用waitFor而不是then()作为最后一个步骤:

casper.waitFor(function check() {
    return ventesLinks.length > 0;
}, function then() {
    this.echo(ventesLinks);
    this.eachThen(ventesLinks, function(response){
        this.echo(response.data);
    });
});