3

私のアプリケーションでは、ユーザーがいつどのようにアプリケーションを操作するかに応じて、JavaScript で多くの計算が行われています。このプロジェクトは、この計算がどのように行われているかに関する貴重な情報を (コンソール呼び出しを通じて) 出力するので、NaN忍び寄る を簡単に見つけることができます。

Selenium (RC と Python) をテストまたはプロジェクトに統合することを計画していますが、Python テスト ケースでコンソール出力メッセージを取得できれば、任意NaNの s や計算ミスさえも特定できます。

では、Selenium がこれらの出力を (できればコンソールのない環境で) 吸収できる方法はありますか?

そうでない場合は、コンソール呼び出しを迂回できるかどうかを知りたいです。console変数を別のものに再バインドして、セレンがその出力を取得し、Python 側に通知できるようにすることができます。または、コンソールではない場合、これを達成できる他の方法はありますか。

セレンにはwaitForElementPresentなどのコマンドがあることは知っていますが、アプリケーションでこれらの中間計算を表示したくないですか、それが唯一の方法ですか?

どんな助けでも感謝します。

ありがとうございました。

4

2 に答える 2

4

ページへの JavaScript 呼び出しの結果を返す GetEval() 呼び出しがあります。ページにJavaScriptがある場合は、次のようなことができます

self.assertEqual(selenium.GetEval("this.browserbot.getUserWindow().functionUnderTest().isNaN();"),"false","There was a NaN detected")

browserbot アクセスにより、ページで JavaScript 関数を呼び出して結果を取得できます。適切な結果が得られた場合、isNaN() は false を返します。

于 2009-11-30T14:00:06.943 に答える
1

JavaScript関数が指定された入力で正しい計算を実行していることを純粋にテストしている場合は、JavaScriptをページから分離し、JavaScriptテストフレームワークを使用して機能をテストすることをお勧めします。Seleniumを使用して低レベルのコードをテストすることは、多くの不要なオーバーヘッドです。完全にレンダリングされたページに反対する場合は、アプリケーションをサーバーで実行する必要があります。これは、生のJavaScriptのテストに依存するものではありません。

最近、アプリケーションをjsUnitの使用からYUI Testの使用に変換しましたが、これまでのところ有望です。3分以内にFireFoxとIEの両方で約150のテストを実行します。私たちのテストはまだ理想的ではありません-Seleniumを使用して多くのJavaScriptを難しい方法でテストしています。ただし、一部のUIテストをYUIテストに移行することで、継続的インテグレーション環境で多くの時間を節約できました。

于 2009-12-14T18:10:33.177 に答える