2011-01-14 6 views
7

私たちのサイトは、$(document).ready()関数でたくさんのJavaScript/jQueryを処理し、ボタンを設定し、ajax経由でコンテンツをロードします.SeleniumはDOMが読み込まれるまで待ってから前にテストに進みます。 ready()が完了しました。

部分的な解決策は、ブラウザがAJAXリクエストを保留しているかどうかを確認するためのチェックを使用しているように見える:

selenium.browserbot.getCurrentWindow().jQuery.active == 0 

しかし、我々はまだ、ボタンや物事のバインディングを設定していないことを保証しません。

ヘルプはと非常に高くなります。と評価されています。現在の「最良の」提案は、.ready()メソッドの最後にある要素をページに追加することです.Seleniumはこれを動作させるためのシグナルとして捕捉できますが、このようなコードをテスト目的で追加するという考え方は、 。

答えて

3

私は、あなたがウィンドウロードチェックを使用することができると信じています。これを試してみてください:

$(window).load(function(){ 
    selenium.browserbot.getCurrentWindow().jQuery.active == 0 
}); 
1

現在の「最良」の提案が セレンが働い スタートを信号として捉えることができます.ready()メソッドの 終わり、のページに要素を追加する ですしかし、この目的のために コードを追加するという考えは、 のように最高のスケッチであるようです。

私は、テスト容易性を改善するためにコードを変更することは悪いことではないと個人的には考えていません。実際に生産ページを汚染しないようにするには、PHPのようなテンプレートツールを使用して、開発/デバッグモードでのみコードを出力してください。

また、このためにDOMを使用する必要はありません。 Seleniumはページ内の完全なJavaScriptコンテキストにアクセスできるため、グローバル変数をフラグとして使用できます。おそらくSELENIUM_PAGE_FULLY_READYのような他の人には使われそうにないものは、その存在のためにセレンのチェックをしているかもしれません。

関連する問題