WebBrowser 页面控制


HTML5 页面单页应用,我们需要触发Click事件,并且Click完毕后再触发下个Click。
InvokeMember

WebBrowser-01

具体写法如下:

public partial class Frm_WebBrowser : Form
   {
       public Frm_WebBrowser()
       {
          InitializeComponent();
          this.webBrowser1.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.webBrowser1_DocumentCompleted);
          this.webBrowser1.Navigated += new System.Windows.Forms.WebBrowserNavigatedEventHandler(this.webBrowser1_Navigated);
       }
       private bool flg_tag = false;
       private string tagurl = null;

       private void Form2_Load(object sender, EventArgs e)
       {
           HtmlElement Html_navigation_cont = webBrowser1.Document.GetElementById("content-navigation-panel");
           if (Html_navigation_cont == null)
           {
               return;
           }

           while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
           {
               Application.DoEvents();
           }

           Regex reg = new Regex("scroll-to-frx[0-9]{1,10}");
           MatchCollection mLink = reg.Matches(Html_navigation_cont.OuterHtml);

           //循环点击,需要等点击完毕之后才继续点击.
           for (int i = 0; i < mLink.Count; i++)
           {
               HtmlElement Tag_a = webBrowser1.Document.GetElementById(mLink[i].Value);
               Tag_a.InvokeMember("click");

               while (!flg_tag)
               {
                  //等待调用完毕后往下走
                     //之后触发 Navigated,DocumentCompleted 事件
                    Application.DoEvents();
               }
           }
       }

       private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
       {
           if (e.Url.ToString() == tagurl)
           {
               flg_tag = true;
           }
       }

       private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)
       {
           tagurl = e.Url.ToString();
       }
   }

 

 


javascript 注入,有时候需要注入段javascript 来控制网页
InvokeScript

var htmlDoc = (IHTMLDocument3)webBrowser1.Document.DomDocument;
   HTMLHeadElement head = htmlDoc.getElementsByTagName("head").Cast<HTMLHeadElement>().First();
   var script = (IHTMLScriptElement)((IHTMLDocument2)htmlDoc).createElement("script");
   script.text = "window.cc = function(){ alert('test'); }";
   head.appendChild((IHTMLDOMNode)script);
webBrowser1.Document.InvokeScript("cc");
posted @ 2014-06-27 15:38  kfsmqoo  阅读(325)  评论(0)    收藏  举报