zoukankan      html  css  js  c++  java
  • C# WebBrowser 遍历网页上的框架

    最近在公司实习,每次上班都要打卡,初来乍到,老是忘了!无奈写了一个定时上公司OA打卡的程序!写的过程中发现公司OA系统(网站)上的按钮(图片、超链接)很难Find,分析了一下网页源码,发现公司OA系统全是用Frame布局的,为了能精准定位,我用递归遍历了一下OA系统的所有框,把每个框架里的Html代码都挖掘出来!以便定位自己要获取的元素!  

        //  webBrowser先设置Url,然后填充数据(账户和密码)实现自动登录OA,等网站加载完毕之后开始分析框架

       //  这里我把框架的结构放到了树形控件TreeView上

            private Hashtable htFrame = new Hashtable();  // key:框架名  value:框架对象
            private Hashtable htFrameContent = new Hashtable(); // key:框架名  value:框架内的Html代码

       private void button1_Click(object sender, EventArgs e)
            {
                treeView1.Nodes.Clear();
                htFrame.Clear();
                htFrameContent.Clear();
                treeView1.Nodes.Add("Frames");  // 根节点
                FillFrame(treeView1.Nodes[0],webBrowser1.Document.Window.Frames); // 调用
            }

            // 遍历所有框架
            private void FillFrame(TreeNode tn, HtmlWindowCollection hwc)
            {
                if (hwc == null) return;
                foreach (HtmlWindow hw in hwc)
                {
                    TreeNode tmpNode = tn.Nodes.Add(tn.Text + "--" +hw.Name); // 防止不同框架内的子框架同名
                    htFrame.Add(tmpNode.Text, hw); // 框架名和框架对象
                    htFrameContent.Add(tmpNode.Text, hw.Document.Body.InnerHtml); // 框架名和框架内的Html
                    if (hw.Frames.Count > 0) FillFrame(tmpNode, hw.Frames);
                }
            }  

  • 相关阅读:
    jenkins连接Publish over SSH失败系列(一)Failed to add SSH key
    jenkins连接Publish over SSH失败系列(一)Failed to change to remote directory
    【2021-07-04】人生十三信条
    【2021-07-03】人生十三信条
    【2021-07-02】发现了成长一丝丝的痕迹
    【2021-07-01】回顾自己过往那点压力
    【2021-06-30】我现在连做梦都纯洁了
    【2021-06-29】做事情时老让自己分心
    【2021-06-28】责任要匹配得上对应的压力
    【2021-06-27】人生十三信条
  • 原文地址:https://www.cnblogs.com/CPFlying/p/1964461.html
Copyright © 2011-2022 走看看