• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C#WebBrowser遍历网页上的框架

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近在公司实习,每次上班都要打卡,初来乍到,老是忘了!无奈写了一个定时上公司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);
            }
        }  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#中的属性get和set()方法发布时间:2022-07-10
下一篇:
C#实现自定义列表发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap