0

ドメイン全体でいくつかの技術テストを自動化したいと考えています。これらのテストには、loadspeed、Yslow Grade、JS エラー、Response Status Code Check などがあります。特定のドメインのすべての URL を取得するスパイダー スクリプトの作成に成功しましたが、今日、これらのテストを実装する際にいくつかの問題が発生しました。

基本的に、未知の URL のリストから既知のメトリックのリストを取得したいとします。これをどのように達成しますか?

私の観点からは、次の 2 つのオプションがあります。

  • テストごとにモジュールを作成し、親スクリプトの各 URL に対してそれらを呼び出します

    これは正しいかもしれませんが、一部のスクリプトは yslow.js のようにオープン ソースです: それらを変換できるかどうかはわかりませんが、(モジュールが原因で) 実行できなくなります。

  • 新しい子プロセス モジュール (execFile または spawn) を使用して phantomjs を再呼び出しします。

    実行を制御できなくなり、パフォーマンスの問題が発生することは間違いありません。

多分私の理解は正しくありません。スクリプトは、一意の URL に対する単一のアクションに制限されていますか? 私が Web で見ることができるすべての例は、常に URL の 1 つ (または静的リスト) に対するものです。

PhantomJS はテスト フレームワークではなく、適切なテスト ランナーを介してテストを起動するためにのみ使用されることを認識しています。おそらく私は Phantom で多くのことをしようとしているので、スクリプトをできるだけシンプルに保つように努めるべきです。

どんな助けでも大歓迎です

4

1 に答える 1

0

まず、CasperJS を調べることをお勧めします。これは Phantom の上で実行され、イベントを連鎖させることを何光年も簡単にします。

2 つ目 - すべてのメトリック スクリプトを順番に実行するようにセットアップし、それを for ループにラップして、URL のリストをそのループに渡すことができるようです。

urls = ['www.google.com', 'www.yahoo.com', 'www.bing.com'];

for each(url in urls) {
    phantom.load(url, function(page) {
        runMetrics(page);
    }
}

これは少し疑似コードっぽいですが、そのようなものは機能しますか?

于 2013-04-05T15:35:31.970 に答える