2009-07-21 150 views
3

我希望與我的瀏覽器窗口進行交互,如果IE瀏覽器也能在Firefox上使用C#,那麼IE瀏覽器也可以。使用C#與瀏覽器交互

我想製作一個軟件,它可以自動填寫webform中的條目。在過去,鱷魚現在是roboform,它可以自動填入數值。

我實際上有一些用戶在使用舊的Windows窗體應用程序時感覺很舒服,所以我想製作一個解決方案,他們仍然可以在他們的Windows應用程序中輸入數據,並且它實際上填寫了Web窗體中的條目,就好像請求已經從瀏覽器本身生成一樣。

我知道我可以合併兩個數據庫,因爲它是一個遺留應用程序重新編寫Windows應用程序的數據庫是一個麻煩..

什麼建議嗎?

+0

要澄清你的問題,你想打開一個瀏覽器的實例填寫表單值嗎?還是你想提交表單值到一個Web應用程序,並顯示在Winform應用程序的結果? – apandit 2009-07-21 17:25:45

回答

4

WatiN旨在讓測試Web應用程序從.NET簡單,它聽起來就像你想要做什麼可能是得心應手:

以下是網絡測試自動化的Hello World示例 ;搜索 谷歌。

[Test] public void 
SearchForWatiNOnGoogle() { using (IE 
ie = new IE("http://www.google.com")) 
{ 
ie.TextField(Find.ByName("q")).TypeText("WatiN"); 
ie.Button(Find.ByName("btnG")).Click(); 
    Assert.IsTrue(ie.ContainsText("WatiN")); 
} } 

華廷功能列表

  • 自動完成所有主要的HTML元素
  • 查找元素由多個屬性
  • 支持AJAX網站測試
  • 支持幀(跨域)和iframe中
  • 支持彈出對話框,如提醒,確認,登錄等。
  • 支持HTML對話框(模式和無模式)
  • 在Internet Explorer 6,7,8和FireFox 2和3
0

如果您使用fiddler,您可能會看到瀏覽器發送回服務器的內容,因此您可以編寫C#代碼來生成相同種類的HTTP request

如果交互非常複雜(通常是現代webapps),那麼您可以按照您的建議自動化瀏覽器。

我已經通過使用InternetExplorer.Application對象自動執行IE,取得了一些成功。它基本上啓動了一個IE的副本,並讓你從代碼中控制它。我幾年前以這種方式寫了一個劇本,以便在Virgin Trains網站上爲我搜索便宜的火車票預訂。

問題在於,對於某些IE安裝,它有時會停止提供我無法自動跳過的安全警告。似乎沒有這樣的模式。

3

它標榜爲測試應用程序,但Selenium RC可以用於填充在形式,並且相當容易設置。您還可以查看WatiN。不知道您可能會看到哪些安全問題。

0

如果您的用戶只是通過WindForms應用程序使用應用程序,那麼您是否有任何特殊原因需要操縱現有Web瀏覽器(如Internet Explorer)的用戶界面,而不是僅僅提供必要的HTTP請求你自己在你的WinForms應用程序中?您可以通過將Method屬性設置爲「POST」並將字段數據寫入Stream,然後使用httpRequest.GetRequestStream

1

您可能還想看看Selenium這是一個Web應用程序測試框架,您可以編程地交互Web UI。