[VB.NET] 使用WebBrowser自動填入表單資料-以Facebook自動登入為例

摘要:[VB.NET] 使用WebBrowser自動填入表單資料-以Facebook自動登入為例

WebBrowser是一個很好用的網頁瀏覽器物件,以IE為核心,可以對網頁進行任何操作,例如自動輸入帳號密碼並登入,下面以Facebook自動登入為例: 

首先要找出輸入資料的INPUT TAG的NAME或ID(建議使用Chrome瀏覽器來找),我們瀏覽https://www.facebook.com/找到登入的表單(Form),發現表單的ID為login_form」還有兩個關鍵的INPUT TAG是電子郵件或電話」、密碼,這兩個HTML Element的ID分別email以及pass」。

回到程式碼的部分,一般來說會在DocumentCompleted 事件中進行操作,我們在Document 屬性中找到特定的HTML Element,再用SetAttribute 方法指定屬性的值,或是用InvokeMember 方法執行submit方法。下面是最基本的填入資料與送出表單(即登入)的程式碼:

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
	WebBrowser1.Document.GetElementById("email").SetAttribute("value", "FB的電子郵件或電話")
	WebBrowser1.Document.GetElementById("pass").SetAttribute("value", "FB的密碼")
	WebBrowser1.Document.GetElementById("login_form").InvokeMember("submit")
End Sub

 

但是如果使用者瀏覽到其他網頁,或是登入的表單不出現在網頁中,可以用If 來判斷特定的HTML Element是否存在: 

Dim form As HtmlElement = WebBrowser1.Document.GetElementById("login_form")

If form IsNot Nothing Then
	form.All("email").SetAttribute("value", "FB的電子郵件或電話")
	form.All("pass").SetAttribute("value", "FB的密碼")
	form.InvokeMember("submit")
End If

 

如此就可以寫出一個可以自動填入表單資料的程式,再以此基礎則可以對網頁做出更多操作,像是判斷是否登入失敗或是取得網頁中特定的資料。

文章內容僅提供技術分享,如有錯誤還請不吝指教。