1. 程式人生 > >webBrowser,控制頁面、提交表單的兩種方法

webBrowser,控制頁面、提交表單的兩種方法

一、第一種方法貌似網上很少有人提。。。。就是使用javascript去控制頁面。

熟悉javascript的人知道,它主要是用來控制客戶端瀏覽器上行為動作的語言。

用瀏覽器隨便開啟一個頁面,在位址列輸入: javascript:alert("a");void(0); 確認,就會彈出警告框。也就是說,可以通過在位址列輸入js程式碼,控制頁面中內容。

比如要添表單,可以 javascript:document.getElementById("username").value="http://blogbeta.blueidea.com/warran";document.getElementById("password").value="123456";void(0);

那麼,使用webBrowser,通過js去控制頁面,提交表單。

webBrowser1.Navigate("javascript:document.getElementById(/"username/").value="http://blogbeta.blueidea.com//"warran/";document.getElementById(/"password/").value=/"123456/";void(0);");

如果還要提交表單,可以加上document.form1.submit();" 就可以了。

不過用這個方法,要注意兩點:

1、在一次執行中,不能多次使用。

比如

private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("javascript:document.getElementById("username").value="http://blogbeta.blueidea.com/warran";void(0);");

            webBrowser1.Navigate("javascript:document.getElementById("password").value="123456";void(0);");
        }

這樣,就會出問題。結果是沒反映。。。。但改成如下,就可以,但基本上,這樣不適合實際應用。

private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate("javascript:document.getElementById("username").value="warran";void(0);");

            messageBox.Show("aaa");

            webBrowser1.Navigate("javascript:document.getElementById("password").value="123456";void(0);");
        }

就是說彈個警告框,就可正常運行了。大致意思就是讓主視窗重新啟用一下,才行。。。

2、Navigate中的js程式碼不能過長,不然仍然會不執行。。。。

二、第二種方法。也是推薦使用的方法,使用ihtmldocument2的類去控制。

1、新增引用。

在COM中,選擇Microsoft.mshtml

2、使用名稱空間。

using mshtml;

3、具體程式碼。

IHTMLDocument2 doc = (IHTMLDocument2)this.webBrowser1.Document.DomDocument;

mshtml.HTMLInputTextElement text1;

text1 = (HTMLInputTextElement)doc.all.item("username", 0);
((mshtml.HTMLInputElement)(text1)).value = "warran";

//這裡注意,因為是input輸入框,所以要定義HTMLInputTextElement類

text1 = (HTMLInputTextElement)doc.all.item("password", 0);
((mshtml.HTMLInputElement)(text1)).value = "123456";

mshtml.HTMLFormElement f1 = (mshtml.HTMLFormElement)doc.all.item("form1", 0);
((HTMLFormElement)(f1)).submit();

//因為是form表單,所以要定義HTMLFormElement類