c# webBrowser全掌握

一、获取网页源代码

     1.不含有框架

      string s=WB1.DocumentText;  //webbrowser1命名为WB1,下同

      2.含有框架

      引用mshtml;          //位置C:Program FilesMicrosoft.NETPrimary Interop AssembliesMicrosoft.mshtml.dll

                object i_frame=0;     //第一个框架
                IHTMLDocument2 doc = FWB.Document.DomDocument as IHTMLDocument2;
                IHTMLFramesCollection2 frames = doc.frames as IHTMLFramesCollection2;
                IHTMLWindow2 frame = frames.item(ref i_frame) as IHTMLWindow2;
                IHTMLDocument2 frameDoc = frame.document as IHTMLDocument2;

                string s=frameDoc.Document.body.innerHTML;


二、获取网页元素

    1.根据ID

  HtmlDocument ele=   WB1.Document.getElementById("元素的ID");

   2,根据name
  HtmlDocument ele=   WB1.Document.all["元素的name"];

   3.无ID无Name----遍历元素

   例如:<input type="submit">提交</input>

     string str_temp;

     HtmlDocument ele=   WB1.Document.getElementById("元素的ID");
            foreach (IHTMLElement ele in eles)
            {
                if (ele.getAttribute("type", 0) != null)
                {
                    str_temp = ele.getAttribute("type", 0).ToString();
                    if (str_temp == "submit")
                    {
                        ele.click();

                        break;
                    }
                }
            }


三、遍历元素

  HtmlDocument ele=   WB1.Document.getElementById("元素的ID");

1.遍历所有元素

           HtmlDocument doc = WB1.Document;
            HtmlElementCollection elements = doc.All;
            foreach (HtmlElement element in elements)
            {
                if (element.GetAttribute("type") == "submit")
                {
                   element.InvokeMember("Click");
                    break;
                }
            }



2.根据元素类型 GetElementsByTagName

     //目前有HTML、Form、Table、TR、TD、Div、A、 IMG、Li、Input、Span等

            HtmlElementCollection eles = WB1.Document.GetElementsByTagName("li") as HtmlElementCollection;
            foreach (HtmlElement ele in eles)
            {
                if (ele.InnerText != null)
                {
                    if (ele.InnerText == "结婚饰品")
                    {
                        ele.InvokeMember("Click");
                        Application.DoEvents();
                    }
                }
            }

3.根据索引值

  HtmlDocument ele=   WB1.Document.getElementsByTagName("input")[0];  //获取input类型的第一个元素


4.根据上下节点和父节点  


例如:  

获取已知ID的下一个节点

  HtmlDocument ele=   WB1.Document.getElementById("元素的ID") .nextSibling; //上个节点 previousSibling

获取已知ID的父节点的第1个节点

  HtmlDocument ele=   WB1.Document.getElementById("元素的ID") .Parent.Children[0]; //或者firstChild


四、执行JS函数

    1.用Navigate

      WB1.Navigate("javascript:postComment();");    //postComment为要执行的JS函数

     2.用IhtmlWindow2接口

            IHTMLWindow2 win2 = WB1.Document.Window.DomWindow as IHTMLWindow2;
            win2.execScript("function confirm(){return true;}", "javascript");

    3.用IhtmlDocument2接口的parentWindow
            IHTMLDocument2 doc2 = WB1.Document.DomDocument as IHTMLDocument2;
            doc2.parentWindow.execScript("function confirm() {return true;}", "javascript");



    

待续 

原文地址:https://www.cnblogs.com/xtfnpgy/p/9285429.html