zoukankan      html  css  js  c++  java
  • 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");



        

    待续 

  • 相关阅读:
    JQuery 学习总结及实例 !! (转载)
    JavaScript 学习笔记
    个人对JS的一些见解
    本博客欢迎交流,文章自由转载,保持署名!
    VSCode:源码编译运行,分析,踩坑
    ant design pro/前端/JS:实现本地运行https
    前端/JS/React/ES6:纯前端实现图片压缩技术
    云服务名词:软件即服务SaaS,怎么这个理解起来这么别扭
    React:effect应该怎么翻译比较合适??
    我给博客加了一个娃娃,一片雪花
  • 原文地址:https://www.cnblogs.com/xtfnpgy/p/9285429.html
Copyright © 2011-2022 走看看