一、第一種方法貌似網上很少有人提。。。。就是使用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:http://warran.blueidea.com/archives/2007/4898.shtml