2012-02-13 99 views
2

我開發C#的桌面程序做一些自動發佈按在WebBrowser控件提交按鈕

  1. 我在C#中WebBrowser控件打開網頁(與形式)
  2. 一旦打開網頁,我正在填寫表單字段的數據(使用C#代碼)。所以沒有人工交互

我的問題是:我如何自動發送數據到服務器(換句話說,我怎麼按下提交按鈕使用C#代碼)?

+0

如果這是用於Web UI測試,那麼你應該指定,否則我可以看到你被轟炸「你應該使用HttpWebRequest」。 – James 2012-02-13 13:09:30

+0

是的,這是爲我的PHP應用程序的UI測試工作 – 2012-02-13 13:23:12

回答

0

看看WatiN。但我個人會使用WebClientHttpWebRequest從/到服務器獲取/張貼數據

+0

感謝您的快速回復。我正在尋找一些與C#web瀏覽器控制的工作示例 – 2012-02-13 13:16:04

1

基本上使用相同的代碼來定位和填充字段,您可以遍歷DOM以查找提交按鈕並通過點擊發送調用。

theElementCollection = WebBrowser1.Document.GetElementsByTagName("input"); 
    foreach (HtmlElement curElement in theElementCollection) { 
     if (curElement.GetAttribute("id").Equals("login_button")) { 
      curElement.InvokeMember("click"); 
+0

我試過這種編碼。但它對我來說效果並不好 – 2012-02-13 13:17:39

+0

只是好奇 - 你是否嘗試了一下,以確保它獲得了元素?我已經寫了一些這些程序,並且必須實施一些解決方法。 – kpcrash 2012-02-13 14:00:18

+0

是的,我試過了。但它沒有提交表格 – 2012-02-26 10:22:43

0

如果你想提交你檢查這一種形式,

// get the document 
mshtml.IHTMLDocument2 doc = ((mshtml.HTMLDocumentClass)webBrowser1.Document); 

// set a variable 
((mshtml.IHTMLElement)doc.all.item("q")).setAttribute("value", "my input..."); 

// click a button 
((mshtml.HTMLInputElement)doc.all.item("btnI")).click(); 

命名空間mshtml位於Microsoft.mshtml大會。

只需添加對Microsoft.mshtml的引用即可。