7

假设我有一个 url 数组。我不想使用 thenOpen 函数。因为它等待每个先前的 url 被加载并且它减少了加载时间。

 casper.each(hrefs,function(self,href){
      self.thenOpen(href,function(){ });
      self.then(function(){
        //  Selectors
     });

});

与上述方法相比,您将使用哪些方法花费更少?在数据库中创建多个实例存储然后获取是否有效......但这很让人头疼。并且还希望您也回答一般情况下我同时运行同一个 js 文件的多个实例时会遇到问题吗?

4

2 回答 2

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。

于 2013-01-18T01:45:28.913 回答
1

如果您想等待每个操作完成以对一系列步骤进行排序,请查看 casper 附带的此示例:https ://github.com/n1k0/casperjs/blob/1.0/samples/multirun.js

于 2013-01-28T07:18:21.047 回答