2009-04-29 5 views
1

私はいくつかの自動化作業を行っていて、サイトの周りを回ることができます。& HTMLフォームへの投稿は大丈夫ですが、今は新しい挑戦に反対しています。Ajaxフォーム。プログラムでAjaxフォームを記入することは可能ですか?

読み込み元がないので、C#でプログラム的にAjaxフォームに記入することが可能かどうか疑問に思っています。私は現在、目に見えないaxWebBrowserを使用しています。

ご協力いただきありがとうございます。

答えて

6

はいASP.NETサイトを有効にUIをテストする前に、それを使用している知っているが、私は、要求に異なるアプローチを使用することをお勧めします/通常のページやAJAXハンドラページを含むサーバのページに応答します。

c#では、WebRequest/WebResponseまたはより特殊なHttpWebRequest/HttpWebResponseクラスを使用してみてください。

Ajaxは、Javascriptの呼び出し元(通常はJSONとしてエンコードされています)の特殊な軽量コンテンツを生成するハンドラを実装するサーバーに対して、JavascriptがHTTP要求を行うことを許可するテクノロジの単なる名です。 。

したがって、AJAX呼び出しをシミュレートするには、対象のアプリケーション(「投稿する」Webページ)を検査し、AJAX通信に使用される形式を確認してから、ページのWebREquest/WebResponseクラスを使用しているC#からのJavascriptの動作。

Firebugを参照してください。ウェブページがどのような呼び出しを行い、どのページにどのページが応答するかを調べることができます。それはAJAX呼び出しを検査するのにも非常に良い仕事をします。ここで

は、Web要求を行う方法の非常に単純な例です:

HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create("http://www.mysite.com"); 

using (HttpWebResponse resp = (HttpWebResponse)wReq.GetResponse()) 
{ 
    // NOTE: A better approach would be to use the encoding returned by the server in 
    // the Response headers (I'm using UTF 8 for brevity) 
    using (StreamReader sr = new StreamReader(resp.GetResponseStream(), Encoding.UTF8)) 
    { 
     string content = sr.ReadToEnd(); 
     // Do something with the content 
    } 
}  

A POSTはなく、別の方法で、また要求です。非常に単純な投稿を行う方法の例については、this pageを参照してください。

EDIT - フローを決定するために - 私はあなたが複製しようとしているページを調べて何を意味Firebugの

でページの動作を点検の詳細は、(Firefoxの上で、私はFirebugのを使用)ツールを使用することですページとサーバーの間の情報の

Firebugでは、「Net」パネルと「Console」パネルを使用してこれを行うことができます。 [Net]パネルには、ページのロード中にブラウザによって実行されたすべてのリクエストが一覧表示されます。 「コンソール」には、ページがロードされた後に発生するページとサーバー間の通信がリストされます。ページがロードされた後に行われるこれらの通信は本質的には複製するAJAX呼び出しです(注:ネットワークモニタリングがFirebugで機能するようにするためにはネットワーク監視が必要です)

Firebugの詳細はMichael Sync's tutorialを参照してください。 AJAXリクエストの詳細については、コンソールパネルで試してみてください。

「WebRequest/WebResponseを使用してC#からページの動作を複製する」に関して、あなたが今までに述べたように、JavascriptのAJAX呼び出しはHTTP要求以上のものではありません。これは、JavacriptがWebサーバーに「舞台裏で」、つまり帯域外にするHTTPリクエストです。これを複製するには、上で示したように通常のGETまたは通常のPOSTを複製することとまったく変わりません。そして、これはFirebugが出場する場所です。これを使用すると、Javascriptのようにリクエストを見ることができます。コンソールパネルを見て、リクエストメッセージの様子を見てください。

次に、HttpWebRequest/HttpWebResponseを使用して、Javascriptと同じタイプのリクエストを作成し、代わりにC#から行うだけで、上記と同じテクニックを使用できます。

Gregg、答えが少しわかりましたが、これを超えて、Firebugで遊んで、HTTPプロトコルの仕組みやAJAXがテクノロジーとしてどのように機能するかを学ぶことをお勧めします。

+0

Wiresharkを見て、パケットレベルまで、ワイヤで何が起こっているのかを見てください。それは優れたフィルタリング/検索ツールを持っています。 – tomfanning

+0

サンプルHttpWebRequestコードが可能であり、ありがとうと聞いてうれしいです。時間がある場合は、 のサンプルコード(またはリンク)を提供することができますか?AJAX通信に使用する形式を確認して、目的のアプリケーション(投稿したいWebページ)を確認してください。 と2) "WebRequest/WebResponseクラスを使用してC#からページのJavascriptの動作を複製する" – MrGreggles

+0

私は答えにいくつかの情報を追加しました。私はそれが助けて欲しい! –

1

あなたはSeleniumを見ましたか?私の知る限り、あなたはC#でテストケースを書くことができると私はテスターが正常にAjaxが

http://seleniumhq.org/

+0

リンクありがとうございます。 – MrGreggles

関連する問題