關於 WinForm中webbrowser控制元件的使用
private void Form1_Load(object sender, EventArgs e)
{
this.webBrowser1.Url = new Uri("http://www.baidu.com");//指定url地址為百度首頁
}
private void button1_Click(object sender, EventArgs e)
{
HtmlElement searchWords = webBrowser1.Document.All["kw"];//獲取百度搜索的文字框
HtmlElement searchButton = webBrowser1.Document.All["su"];//獲取百度搜索的按鈕
searchWords.SetAttribute("value", "趙薇");//給百度搜索的文字框賦值
searchButton.InvokeMember("click");//呼叫百度搜索按鈕的點選事件
}
在winform中拖一個webbrowser控制元件,然後在相應事件中鍵入如上程式碼,就可以實現自助搜尋(無需在文字框中輸入關鍵詞趙薇,再點搜尋按鈕,而是直接點選一個按鈕進行搜尋)。
原理很簡單,就是通過查詢在webbrowser控制元件生成的html程式碼中的input元素或button元素的id,通過api實現模擬賦值和查詢工作。
再附一個稍微複雜的一點的例子。
如果生成的html比較複雜,比如含iframe這類的標籤時該如何處理呢?
比如,我們要訪問qq空間裡面的留言功能時,通過google chrome瀏覽器看到的html程式碼,很複雜,好在我們也有辦法處理
private void button1_Click(object sender, EventArgs e)
{
if (!webBrowser1.IsBusy)//判斷有沒有載入新的文件
{
HtmlElement searchButton = webBrowser1.Document.Window.Frames["tgb"].Document.All["btnPostMsg"];//獲取到iframe id為tgb下面的button
searchButton.InvokeMember("click");
}
}