2009-04-29 124 views
1

我正在做一些自動化工作,並可以讓我的方式在一個網站&發佈到HTML表單好嗎,但現在我正迎來一個新的挑戰,Ajax形式。是否有可能以編程方式填寫Ajax表單?

由於沒有閱讀的源代碼,我只是想知道是否可以在C#中以主動方式填充Ajax表單。我目前正在使用不可見的axWebBrowser。

在此先感謝您的幫助!

回答

6

是的,但我建議使用不同的方法來請求/響應包括常規頁面的服務器頁面,以及AJAX處理程序頁面。

在c#中,嘗試使用WebRequest/WebResponse或更專用的HttpWebRequest/HttpWebResponse類。

對於允許Javascript向服務器發送HTTP請求的技術而言,Ajax只不過是一個「奇特」名稱,該服務器通常實現一些爲Javascript調用者生成專用輕量級內容的處理程序(共同編碼爲JSON) 。

因此,爲了模擬AJAX調用,您所要做的就是檢查您的目標應用程序(您希望「發佈」到的網頁)並查看AJAX通信使用的格式 - 然後複製頁面的使用WebREquest/WebResponse類從C#執行Javascript行爲。

請參閱Firebug - 一個偉大的工具,允許您檢查一個網頁,以確定它所做的調用,頁面以及這些頁面響應的內容。它在檢查AJAX調用方面也做得很好。

這裏有一個如何做一個網絡請求,一個很簡單的例子:

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 
    } 
}  

一個貼子還要求,但有不同的方法。查看this page瞭解如何做一個非常簡單的帖子的例子。

編輯 - 對使用Firebug檢查網頁的行爲細節

我的意思是,通過檢查你想複製的頁面是使用工具(我使用Firebug - 在Firefox)來確定流量頁面和服務器之間的信息。

使用Firebug,您可以通過使用「Net」和「Console」面板來完成此操作。 「網絡」面板列出加載頁面時瀏覽器執行的所有請求。而「控制檯」將列出頁面加載後發生的頁面與服務器之間的通信。那些在頁面加載後發生的通信基本上是您想要複製的AJAX調用(注意:網絡監控必須在Firebug中爲此工作)

檢出Michael Sync's tutorial瞭解更多關於Firebug並嘗試使用控制檯面板來了解有關AJAX請求的更多信息。

關於「使用WebRequest/WebResponse從C#複製頁面的行爲」 - 您必須認識到的是,就像我之前所說的那樣,Javascript AJAX調用只不過是一個HTTP請求。這是一個HTTP請求,Javacript使「幕後」或帶外到Web服務器。要複製這一點,它與複製一個正常的GET或一個正常的POST類似,正如我上面顯示的那樣。這就是Firebug進場的地方。使用它可以查看請求,如Javascript所做的那樣 - 查看控制檯面板,並查看請求消息的外觀。

然後,您可以使用與上述相同的技術,使用HttpWebRequest/HttpWebResponse與Javascript所做的請求類型相同,只能從C#中完成。

Gregg,我希望這可以澄清我的答案,但除此之外,我建議玩Firebug,也許可以瞭解更多關於HTTP協議如何工作以及AJAX如何作爲技術的工作。

+0

看看Wireshark,看看線路上發生了什麼,直到數據包級別。它具有出色的過濾/搜索工具。 – tomfanning 2009-04-29 18:57:23

1

你看過Selenium嗎?據我所知,你可以寫在C#中的測試案例,我知道我們的測試已經成功地使用過它的UI測試一個啓用Ajax ASP.NET網站

http://seleniumhq.org/

+0

感謝您的鏈接。 – MrGreggles 2009-04-30 00:21:36

相關問題