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

來源:互聯網
上載者:User

一、第一種方法貌似網上很少有人提。。。。就是使用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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.