操作IE主要使用兩個Com Dll:
1、Microsoft Internet Controls
2、Microsoft HTML Object Library
使用Microsoft Internet Controls取得所有的已經打開的IE(以Tab計算)
SHDocVw.ShellWindows IETabs = new SHDocVw.ShellWindows();
每個一個Tab都可以操作,每個Tab對應Com Object的SHDocVw.InternetExplorer
foreach (SHDocVw.InternetExplorer ieTab in IETabs)
{
}
取得每個Tab之后,就可以通過InternetExplorer的Document取得每個頁面的Dom
mshtml.HTMLDocument dom = ieTab.Document as mshtml.HTMLDocument;
取得Dom之后,基本上就已經取得了操作IE的所有權限了,可以繼續使用HTML Object Library對頁面進行操作
或者通過注冊JavaScript,對頁面進行操作:
mshtml.IHTMLScriptElement script = dom.createElement("script") as mshtml.IHTMLScriptElement; \\創建script標簽
script.text = "$(\"[name='wd']\").val('劉德華');"; \\通過Jquery,對百度進行操作
mshtml.HTMLBody body = dom.body as mshtml.HTMLBody; \\取得body對象
body.appendChild((mshtml.IHTMLDOMNode)script); \\注冊JavaScript
完整代碼(循環所有ieTab,對百度頁面操作...搜索劉德華):
SHDocVw.ShellWindows IETabs = new SHDocVw.ShellWindows(); foreach (SHDocVw.InternetExplorer ieTab in IETabs) { if (ieTab.LocationURL.Contains("www.baidu.com")) { mshtml.HTMLDocument doc = ieTab.Document as mshtml.HTMLDocument; mshtml.IHTMLScriptElement script = doc.createElement("script") as mshtml.IHTMLScriptElement; script.text = "$(\"[name='wd']\").val('劉德華');"; mshtml.HTMLBody body = doc.body as mshtml.HTMLBody; body.appendChild((mshtml.IHTMLDOMNode)script); } }
園里有其他更加詳細的參考Blog:
c#控制IE瀏覽器自動點擊等事件WebBrowser,mshtml.IHTMLDocument2
個人建議:
基本接入IE,使用Com,然后其他業務操作,通過注入JavaScript進行操作