C# WebBrowser 遍曆網頁上的架構

來源:互聯網
上載者:User

最近在公司實習,每次上班都要打卡,初來乍到,老是忘了!無奈寫了一個定時上公司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);
            }
        }  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.