2011-06-28 14 views
6

セレンRCでのAjaxテストについて私にブリーフィングしてください。 Ajaxの要素では、ビューソースには反映されませんが、firebugを使用すると、HTMLソースコードの変更を見ることができます。セレン:Ajaxテスト

Ajaxのテスト、それに関連する2つの方法があります。..

1-方法「WAITFORCONDITION(java.lang.Stringでスクリプト、のjava.lang.Stringタイムアウトが)、私たちは、Javaを作成する必要がスクリプトを提供するために自分のことでスクリプトまたはそれは、Webページ上に存在し、同じアヤックススクリプト/ Javaスクリプトでなければなりません。

私は上のポイント下回っ間違っているなら、私を修正してください。..

2-法「waitForElemantPresent(ロケータ)」 、私たちは火薬の中の要素をチェックし、このメソッドで同じものをチェックすると、自己waitForElemantPresent(ロケータ)。

私がAjaxアプリケーションのテストに欠けていることがあれば教えてください。

+1

Ajax要素が読み込まれるまで待つ方法をお探しですか? –

+0

はいAJ、私は最初の点を明確にする必要があり、Selenium1またはSelenium2を使用してAjaxをテストする方法は他にありません。私を助けてください。前もって感謝します... – smriti

答えて

6

http://agilesoftwaretesting.com/?p=111

はJQuery:「jQuery.active」

プロトタイプ: "Ajax.activeRequestCount"

Dojo: "dojo.io.XMLHTTPTransport.inFlight.length"

したがって、Ajaxコールがある場合は、2番目のオプションを使用できます。

selenium.waitForCondition(
     "selenium.browserbot.getCurrentWindow().jQuery.active == 0", 
     timeout); 
+0

はい、これは良い方法です。 +1 –

1

最初の点に答えるには、waitForCondition(javascript,timeout)は、タイムアウトが発生したときに真の値を返すか、タイムアウトが発生するまでjavascriptを実行します。アプリケーションウィンドウでスクリプトを実行するには、browserbotを使用する必要があるので、このためのAPIドキュメントを見てください。 APIドキュメントへのリンクはhere

です。Ajaxの条件を処理する方法の1つは、条件が満たされるかタイムアウトが発生するまで待つカスタム関数を作成することです。要素が存在しない場合、通常のSelenium.isElementPresentは即座に失敗しますが、カスタム関数は失敗するまでにもう少し時間がかかります(Ajaxがロードされるまでの時間)。例として、isElementPresentの次のカスタムメソッドを参照できます。これはJAVAで書かれているので、使用するプログラミング言語で同じロジックを使用できるはずです。

public boolean AjaxIsElementPresent(String elementToLookFor, int timeOutValueInSeconds){ 

int timer=1; 
while(timer<=timeOutValue){ 
if(selenium.isElementPresent(locator)) 
    return true; 
else 
    Thread.sleep(1000); 
    } 
return false; 

}

要素も指定のTimeoutValue後に存在しない場合、この方法は、ブール偽を返します。タイムアウト値内に要素がある場合はtrueを返します。

私は、Selenium 2でAjaxConditionを処理するための組み込み関数をいくつか見てきましたが、私はそれを使用していません。あなたはセレン2コードベースを参照することができ

私は1つの記事からと@Hannibalの助けを借りて、この上で助けを得
+0

ありがとうございます、このヘルプ@AJのために、私はこれを試してくださいあなたのコメントを投稿してください私の答えを掲載しました...もう一度ありがとう! – smriti

関連する問題