test页首Html代码test

WPF WebBrowser中的Document

首先要引入Microsoft.mshtml.dll 地址是C:\ProgramFiles\Microsoft.NET\Primary Interop Assemblies


1、根据元素ID获取元素的值。

比如要获取<img class="" id="regimg"src="/register/checkregcode.html?1287068791" width="80"height="22">这个标签里的src属性的值:

mshtml.IHTMLDocument2 doc2 =(mshtml.IHTMLDocument2)webBrowser1.Document;
mshtml.IHTMLElement img =(mshtml.IHTMLElement)doc2.all.item("regimg", 0);

string imgUrl = (string)img.getAttribute("src");


2、填写表单,并确定

mshtml.IHTMLElement loginname =(mshtml.IHTMLElement)doc2.all.item("loginname", 0);
   mshtml.IHTMLElement loginPW =(mshtml.IHTMLElement)doc2.all.item("password", 0);
   mshtml.IHTMLElement loginBT =(mshtml.IHTMLElement)doc2.all.item("formsubmit", 0);
   mshtml.IHTMLElement loginYZ =(mshtml.IHTMLElement)doc2.all.item("regcode", 0);
   loginname.setAttribute("value", tbLoginName.Text);
   loginPW.setAttribute("value", tbLoginPassWord.Password);
   loginYZ.setAttribute("value", tbYZ.Text);
   loginBT.click();


3、获取源码

textBox1.Text = doc2.body.innerHTML;


4、执行JS

mshtml.IHTMLWindow2 win =(mshtml.IHTMLWindow2)doc2.parentWindow;
win.execScript("changeRegImg()", "javascript");//使用JS


5、禁止JS,WPF下目前发现唯一适用的一种方法:

public void HideScriptErrors(WebBrowser wb, bool Hide)
   {

    FieldInfofiComWebBrowser = typeof(WebBrowser).GetField("_axIWebBrowser2",BindingFlags.Instance | BindingFlags.NonPublic);

    if(fiComWebBrowser == null) return;

    objectobjComWebBrowser = fiComWebBrowser.GetValue(wb);

    if(objComWebBrowser == null) return;

   objComWebBrowser.GetType().InvokeMember(

    "Silent",BindingFlags.SetProperty, null, objComWebBrowser, new object[] {Hide });

   }

   voidwebBrowser1_Navigated(object sender, NavigationEventArgs e)
   {

   HideScriptErrors(webBrowser1,

   true);

   }

posted @ 2014-05-06 16:45  向着目标稳步前行  阅读(731)  评论(0)    收藏  举报

test页脚Html代码test