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 に答える