Javascript 如何正确使用CasperJS中的casper.each
我正在写一个小脚本来查询电子商务网站上的一些广告。我的代码是这样的Javascript 如何正确使用CasperJS中的casper.each,javascript,casperjs,Javascript,Casperjs,我正在写一个小脚本来查询电子商务网站上的一些广告。我的代码是这样的 var keywords = ['fender', 'yamaha']; var casper = require('casper').create(), url = 'http://www.somecommercesite.com'; casper.start(url, function () { casper.each(keywords, function (self
var keywords = ['fender', 'yamaha'];
var casper = require('casper').create(),
url = 'http://www.somecommercesite.com';
casper.start(url, function () {
casper.each(keywords, function (self, word) {
casper.echo("Getting entries for keyword " + word + "..");
casper.fill('form#frmsearch', {
'q': word
}, true);
casper.then(function () {
casper.echo("KEYWORD SHOULD BE: " + word);
var actualKeyword = casper.evaluate(function() {
return "ACTUAL KEYWORD: " + document.getElementsByTagName('strong')[0].innerText;
});
casper.echo(actualKeyword);
var result = casper.evaluate(function () {
var entry = document.getElementsByClassName("listing")[0];
return entry.innerText;
});
casper.echo(result);
});
});
});
casper.run();
然而,我得到了错误的结果。输出是
Getting entries for keyword fender..
Getting entries for keyword yamaha..
KEYWORD SHOULD BE: fender
ACTUAL KEYWORD: fender
// entries for fender
KEYWORD SHOULD BE: yamaha
ACTUAL KEYWORD: fender
// entries for fender
所以,我得到了两次挡泥板条目,但从来没有得到yamahas。这些代码怎么了?我找到了答案。我需要用casper.then()包围casper.fill()