C# webbrowser輕鬆實現自動填表

步驟如下:

第一步:獲取網頁
調用Webbrowser 的Navigate系列函數。等待網頁裝載完成,得到document對象。

在調用 webBrowser.Document 之前,請確保 Webbrowser 網頁裝載完成,可以通過Webbrowser的DocumentCompleted事件進行監視。

小技巧

先指定一個變量:
IsCompleted
在調用Webbrowser 的Navigate,Refresh系列函數之前,將IsCompleted設爲false。
在DocumentCompleted事件中,如果 ReadyState 爲 WebBrowserReadyState.Complete,則設IsCompleted爲true.

調用webBrowser.Document之前對IsCompleted進行判斷。如果不爲true,則延時循環等待,直到IsCompleted被設爲true.

第二步:設置網頁元素數據

確保得到document對象之後,通過 GetElementById 獲取網頁元素,如:

HtmlElement user = webBrowser.Document.GetElementById("user");
HtmlElement password = webBrowser.Document.GetElementById("password");

設置網頁元素值:

user.InnerText = "myname";
password.InnerText = "123456";

小技巧
作用 SetAttribute 設置下拉框,複選框,多選框數據

下拉框:
secret.SetAttribute("value", "question1");  
複選框
rememberme.SetAttribute("Checked", "True");
多選框
cookietime.SetAttribute("checked", "checked");

當然,在SetAttribute 之前,也可以用GetAttribute取相關的屬性先進行判斷,再根椐需要進行設置。


第三步:提交網頁數據

先取提交的按鈕對象。
HtmlElement submit = webBrowser.Document.GetElementById("submit");
 

進行提交
submit.InvokeMember("click");

就是怎麼簡單。整個過程也就是 http get和post的過程。

當然也可以用低級點的WebRequest,還有更低級的socket來做,不過,現在的衆多頁面都有這樣,那樣的變形驗證碼,如果你和我一樣,搞不定驗證碼識別,又貪圖快點完成任務,上面的辦法絕對是又快,又好。

在c#中使用webBrowser獲取input標籤的值或者按鈕提交事件

1.如果一個input文本框存在id獲取或設置它的值

webBrowser.Document.GetElementByID("標籤id").SetAttribute("value","你要設置的值");

如果一個input 按鈕同樣存在id

webBrowser.Document.GetElementById("按鈕的id").InvokeMember("click");//給它個單擊事件

2.那麼問題來了

如果一個按鈕沒有id和name怎麼設置它的單擊事件呢

首先要獲取所有的input標籤集合

  HtmlElementCollection htmlele = webBrowser1.Document.GetElementsByTagName("input");

然後遍歷一下集合獲取OuterHtml

   foreach (HtmlElement item in htmlele )
                {
                    if (item.OuterHtml == "<INPUT class=anniu type=submit value=提交>")
                    {
                        item.InvokeMember("click");
                    }
                }


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章