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