1

Zendアプリケーションの機能テストを書いています。PHPUnitとこのラッパーを使用して実行します:https ://github.com/chibimagic/WebDriver-PHP

jarファイルからローカルでseleniumスタンドアロンサーバーを実行します(v2.19.0)。このアプリでは多くのjsとajaxを使用しているので、FunctionalTestCaseクラスでwaitForAjax関数を作成しました。これにより、すべてのデータが正しく読み込まれるまで待つことができます。私はjQueryajax関数を使用しているので、$。activeを使用します。関数は次のようになります。

public function waitForAjax($timeout = 10) {
  sleep(1);
  for($i = 0 ; $i < $timeout - 1 ; $i++) {
    $active = $this->getJsResult('return $.active;');

    if($active > 0) {
      sleep(1);
    }else {
      break;
    }
  }
}

関数getJsResultは、WebDriverラッパーからexecute_js_syncを実行し、Selenium応答から結果を取得します。

私の問題は次のとおりです。サイトでjsを実行すると、セレンがランダムにハングします。ほぼ瞬時に戻ることもありますが、ほとんどの場合、スクリプトの実行を継続します。これはサーバーからの唯一の出力です。

11:58:48.386 INFO - Executing: [execute script: return $.active;, []] at URL: /session/1334915841900/execute)

私が最も気になるのは、なぜこれがそれほどランダムに起こっているのかということです。

私は本当にここでいくつかの助けを使うことができました。

乾杯、Maciej

4

1 に答える 1

0

私が最初にSeleniumを使用したときも、ランダムにクラッシュし、RAMを大量に消費し、アプリケーションが持つ可能性のある最大RAMに到達したことがわかりました。これは、リクエストごとにプログラムで起動して強制終了することで解決した問題かもしれません。

よろしく、

Corné

于 2012-05-15T14:37:07.440 に答える