2012-05-04 54 views
4

背景: 我正在創建一個Windows Form應用程序,用於自動化Intranet Web應用程序上的訂單輸入。我們有大量的訂單輸入需要完成,這將花費我們很多錢,所以我通過自動化完成了任務。C#Webbrowser自動化

問題: 我正在使用webbrowser類來瀏覽Web應用程序。我已經走得很遠,但達到了路障。應用程序中有一部分可打開Web對話框頁面。我如何與網頁對話進行交互。我的webbrowser類的實例仍然在父頁面中。我希望有人能指引我走向正確的方向。

+0

YPU可能是更好的使用Web客戶端在一次 –

+3

這些是爲了形式簡單的HTTP POST的發佈了一個完整的形式向Web服務器的最終要求,還是需要等待Ajax化查詢返回? – user7116

回答

4

你必須取決於複雜的您所需要的兩個選擇:

  1. 使用像Fiddler一個HTTP調試找出POST數據,你 需要發送的每一頁,並通過HttpWebRequest模仿它。
  2. 使用Browser Automation ToolSelenium並完成這項工作。

注:您的行動可以被視爲通過該網站發送垃圾郵件,所以要準備好IP封鎖,CAPTCHA ...

0

你可以給硒一展身手:http://seleniumhq.org/ UI自動化是一個更爲直觀的​​方法到這些類型的任務。

4

你有很多選擇。爲了擴大在別人的答案,並添加一個新的想法...

做它使用WebBrowser控件:這在技術上是可以通過任一的JavaScript注入到目標頁面demonstrated here或創建一個JavaScript對象,並用它作爲通過webbrowser.objectforscripting財產的橋樑。這非常脆弱 - 就像網站更改元素的ID可能會破壞它一樣簡單。你還需要確保你的代碼不會與窗體的功能干擾(衝突函數名,等...)

使用回傳就做:監視Web瀏覽器和服務器之間的通信(我個人更喜歡Firfox/Firebug,但即使/ Fiddler或Chrome/F12也都不錯)。只要您可以準確地複製瀏覽器的操作,服務器就無法知道其中的差異。這裏的問題在於瀏覽器複雜,表單越安全,服務器要求越高。這意味着您可能必須僞造登錄名,獲取cookie,將它們發送回來,處理Viewstate數據和xss預防變量。這是可能的,而且比第一種方法更強大,但可能會讓人感到痛苦。如果它不是一個高度安全的形式,這是你最好的選擇。 More information here

通過瀏覽器自動開始:Selenium可能(如其他人所說),但類似的缺陷,以WebBrowser控件在遭受它的敏感到窗體本身的變化(但不是這裏最好的選擇如網絡瀏覽器控制)。順便說一下,如果你有Visual Studio Ultimate/Test版本(以及其他一些,不知道哪一個版本),它包括一套測試工具,包括一個優秀的引擎來自動負載測試一個網站。這也非常適合追蹤形式的功能,因爲您可以看到仿真的每一步。

希望這有助於