在WiinForm使用WebBrowser控件的過程中,常常會被目標網(wǎng)頁上彈出的alert、confirm等對話框打斷工作流程。google了一下,發(fā)現(xiàn)有人采用定時器自動送Enter,也有人采用FindWindow等方法來進行自動關(guān)閉,其實,我們只需要在目標網(wǎng)頁上執(zhí)行一段腳本就可以了。
//禁用目標window的confirm、alert等對話框。
private void disableConfirm()
{
HtmlDocument doc = webBrowser1.Document.Window.Frames["mainFrame"].Document;
//框架結(jié)構(gòu)中,必須正確的指定目標框架
IHTMLWindow2 win = (IHTMLWindow2)doc.Window.DomWindow;
string s = @"function confirm() {";
s += @"return true;";
s += @"}";
s += @"function alert() {}";
win.execScript(s, "javascript");
}
為了使用IHTMLWindow2接口,必須的添加對非托管COM對象的托管包裝,在VS2005中很簡單,只需要在項目引用里面選擇COM選項卡,添加Microsoft HTML Object Library即可,路徑為C:\Windows|System32\MSHTML.TLB。在CS文件里面引入托管包裝的命名空間mshtml即可。
using mshtml;
“Add Reference-->COM-->Microsoft HTML Object Library 4.0 ” "MSHTML TLB"
存取網(wǎng)頁的DOM元素:
HtmlElement euser = webBrowser1.Document.All["txtUserName"];
HtmlElement bSubmit = webBrowser1.Document.All["Button1"];
euser.SetAttribute("value","想設置的值"); //設置DOM元素value屬性
bSubmit.InvokeMember("click"); //激發(fā)該元素的click事件