加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【C#】[网络]WebBrowser网页操作之提取获取元素和标签(完整篇)

(2012-08-03 19:36:00)
标签:

杂谈



http://www.cnblogs.com/isaced/archive/2011/01/24/1943227.html

在此基础上加强

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows.Forms;//

 

namespace WebBrowser网页操作

{

    public class Element

    {

 

        //根据Name获取元素

        public HtmlElement GetElement_Name(WebBrowser wb,string Name)

        {

            HtmlElement e = wb.Document.All[Name];

            return e;

        }

 

        //根据Id获取元素

        public HtmlElement GetElement_Id(WebBrowser wb, string id)

        {

            HtmlElement e = wb.document.getElementByIdx(id);

            return e;

        }

 

        //根据Index获取元素

        public HtmlElement GetElement_Index(WebBrowser wb,int index)

        {

            HtmlElement e = wb.Document.All[index];

            return e;           

        }

 

   // 据Type获取元 ,在没有NAME和ID的情况下使用
   public HtmlElement GetElement_Type(WebBrowser wb,string type)
    {
        HtmlElement e=null;
        HtmlElementCollection elements = wb.Document.getElementsByTagName_r("input");
        foreach (HtmlElement element in elements)
        {
            if (element.GetAttribute("type") == type)
            {
                e = element;
            }
        }
        return e;
    }
// 据Type获取元 ,在没有NAME和ID的情况下使用,并指定是同类type的第 个,GetElement_Type()升级版
   public HtmlElement GetElement_Type_No(WebBrowser wb,string type,int i )
    {
        int j=1;
        HtmlElement e=null;
        HtmlElementCollection elements = wb.Document.getElementsByTagName_r("input");
        foreach (HtmlElement element in elements)
        {
            if (element.GetAttribute("type") == type)
            {
                if(j==i)
                 {
                   e = element;
                 }
                 j++;
            }
        }
        return e;
    }

        //获取form表单名name,返回表单

        public HtmlElement GetElement_Form(WebBrowser wb,string form_name)

        {

            HtmlElement e = wb.Document.Forms[form_name];

            return e;

        }

 

 

        //设置元素value属性的值

        public void Write_value(HtmlElement e,string value)

        {

            e.SetAttribute("value", value);

        }

         

        //执行元素的方法,如:click,submit(需Form表单名)等

        public void Btn_click(HtmlElement e,string s)

        {

 

            e.InvokeMember(s); 

        }

 

    }

}

这是调用这个类的窗体代码:

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace WebBrowser网页操作

{

    public partial class Form1 : Form

    {

 

        Element el = new Element();

 

        public Form1()

        {

            InitializeComponent();

        }

         

        private void Form1_Load(object sender, EventArgs e)

        {

            webBrowser1.Navigate(Application.StartupPath + @"\Test.html");

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            el.Write_value(el.GetElement_Name(webBrowser1,"username"),"isaced");

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            el.Write_value(el.GetElement_Id(webBrowser1, "password"), "123456");

        }

 

        private void button3_Click(object sender, EventArgs e)

        {

            el.Btn_click(el.GetElement_Id(webBrowser1,"button"),"click");//方法用的按钮click

        }

 

        private void button4_Click(object sender, EventArgs e)

        {

            el.Btn_click(el.GetElement_Form(webBrowser1, "form1"), "submit");//先获取表单,再调用表单的submit方法

        }

    }

}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有