假设我有一系列网址。我不想使用thenOpen函数。因为它等待加载每个以前的url并减少加载时间。
casper.each(hrefs,function(self,href){
self.thenOpen(href,function(){ });
self.then(function(){
// Selectors
});
});
与上述方法相比,您使用哪种方法花费更少?在db中创建多个实例存储然后获取是否有效...但这很令人头痛。并且当我同时运行同一个js文件的多个实例时,也希望你也能回答我有问题吗?
答案 0 :(得分:9)
如果您不关心正在打开的所有URL之间的行为同步,那么您应该为每个URL启动多个casper实例。这是一个例子:
var casperActions = {
href1: function (casper) {
casper.start(address, function() {...});
// tests and what not for href1
casper.run(function() {...});
},
href2: function (casper) {
casper.start(address, function() {...});
// tests and what not for href2
casper.run(function() {...});
},
...
};
['href1', 'href2', ...].each(function(href) {
var casper1 = require('casper').create();
casperActions[href](casper);
});
每个实例彼此独立运行,但它允许您同时点击多个URL。
答案 1 :(得分:1)
如果您想等待每个操作完成以排序一系列步骤,请查看此示例包含casper:https://github.com/n1k0/casperjs/blob/1.0/samples/multirun.js