2014-02-27 22 views
0

Casperjs有一些奇怪的行爲。當我執行我的代碼時,最後的then步驟並不總是被調用。我真的不知道爲什麼。Casperjs並不總是執行一些步驟

代碼

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() { 

}); 

感謝

回答

0

如果你真的需要分割的2個步驟,那麼你應該在最後一個使用WAITFOR而不是那麼():

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