8

私はphantomjsでいくつかのテストをしようとしています...基本的に私はしたいです:

  • 私のウェブサーバーでページを開く
  • ページが初期化されると (すべてのページ js が読み込まれます)
  • phantomjs からページ js を呼び出して結果をテストする
  • ファントムjsを終了

ページが読み込まれたときにphantomjsが気付くのは難しいようです。

phantomjs を使用して、ウィンドウなどに「テスト」変数を設定し、ページ js がそれをチェックして、完了したらコールバックを呼び出すことができます。問題は、コールバックがページ コールバックにしかできないことです。そのため、ページで実行できないことは何も実行できません。

それはテスにとっては問題ないかもしれませんが、最後のステップは不可能です。

私はこれを思いついた:

page.onConsoleMessage = function(msg) {
  if (msg == "__quit__") {
    phantom.exit();
  }
  else {
    console.log("page: " + msg);
  }
};

page.evaluate(function () { 
  window.quit = function () { console.log("__quit__"); };
});

したがって、ページ コードは window.quit() を呼び出すことができ、コンソール モニターはファントムを強制終了できます。ただし、これは少しハッキーなようです。誰かがそれを行うためのより良い方法を持っていますか?

4

1 に答える 1

1

免責事項: これはテストされていないコードです

Webpage オブジェクトの onLoadFinished コールバックにアタッチできる場合があります。これは PhantomJS のスコープで実行されるため、すべての変数を使用できます。

次のようなもので十分です。

page.onLoadFinished = function(){
   page.evaluate(function() {
//call your testing code here
   });

phantom.exit();
}
于 2012-05-07T16:53:13.750 に答える