最近使用WebBrower做了几个Hook小程序,收集积累如下:

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.GetElementById(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("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("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方法

}

}

}

WebBrowser网页操作之提取获取元素和标签(完整篇)的更多相关文章

  1. webBrowser中操作网页元素全攻略

    原文 webBrowser中操作网页元素全攻略 1.获取非input控件的值: webBrowser1.Document.All["控件ID"].InnerText; 或webBr ...

  2. 常用数组、字符串方法总结&获取元素、DOM操作

    字符串的方法.返回值.是否改变原字符串:1 charAt() 方法可返回指定位置的字符. 不改变原始字符串 JavaScript并没有一种有别于字符串类型的字符数据类型,返回的字符是长度为 1 的字符 ...

  3. 从零开始学 Web 之 DOM(二)对样式的操作,获取元素的方式

    大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...

  4. selenium常用命令--操作页面元素及获取元素内容整理

    selenium常用命令之操作页面元素及获取元素内容的事件整理 例子:  /**id <input type="text" id="phone" name ...

  5. selenium常用操作,查找元素,操作Cookie,获取截图,获取窗口信息,切换,执行js代码

    目录: 1. 常用操作 2. 查找元素 3. 操作Cookie 4. 获取截图 5. 获取窗口信息 6. 切换 7. 执行JS代码 简介 selenium.webdriver.remote.webdr ...

  6. selenium常用命令之操作页面元素及获取元素内容的事件整理

    /**id <input type="text" id="phone" name="phone" class="LoginT ...

  7. 通过ID获取元素 注:获取的元素是一个对象,如想对元素进行操作,我们要通过它的属性或方法。

    通过ID获取元素 学过HTML/CSS样式,都知道,网页由标签将信息组织起来,而标签的id属性值是唯一的,就像是每人有一个身份证号一样,只要通过身份证号就可以找到相对应的人.那么在网页中,我们通过id ...

  8. javascript根据元素自定义属性获取元素,操作元素

    写在前面:给某个或多个元素自定义属性data-tar,想获取data-tar='123'的元素来进行进一步的操作,如何实现? function getElementByAttr(tag,attr,va ...

  9. Javascript及Jquery获取元素节点以及添加和删除操作

    用了javascript和jquery很久,把所有元素节点的操作总结了下,放在博客上作为记录. Javascript获取元素的主要方式有三种 1.document.getElementById('ma ...

随机推荐

  1. POJ 1442 Treap模板

    // by SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using na ...

  2. LeetCode Weekly Contest 25

    1. 507. Perfect Number 显然小于2的都不满足(尤其是负数的情况),进一步,显然质数都不满足,所以小于4的数,直接return false. 然后依次暴力枚举判断到sqrt(n), ...

  3. 访问修饰符相关注意点(protected子类友好)

    注意:protected表示只有在子类和同包中可以访问. 需要注意的是,在其他包中,若是创建了父类的对象,但是父类对象访问不了自己类里面用protected修饰的属性,只能由子类访问父类的protec ...

  4. Docker的官网在线--中文教程

    1.官网界面:https://www.docker.com/tryit/ In this 10-minute tutorial, see how Docker works first-hand: Yo ...

  5. boost多线程使用简例

    原文链接:http://www.cppblog.com/toMyself/archive/2010/09/22/127347.html C++ Boost Thread 编程指南 转自cnblog: ...

  6. Win7系统无法记住网络访问的凭据怎么办?

    访问内网其他IP时已经打勾记住我的凭据了,但是注销或者重启Win7系统之后,又得重新输入用户名跟密码怎么办? 下面就为大家介绍一下如何让Win7系统记住网络访问的凭据. 以上问题还会引发,重启后无法正 ...

  7. WEBGL学习【十四】利用HUD技术在网页上方显示三维物体

    关键点: <!--实现原理:要保证这两个canvas相互重叠;z-index表示了两个画布的上下层关系--> <!--是WEBGL的三维图形Canvas(主要用于绘制三维场景)--& ...

  8. [LUOGU2730] 魔板

    搜索水题.因为只有8个数,排列一共有40320种,直接bfs,判重就行了. 但是判重的时候直接用8进制表示的话要88的bool数组.这种操作太low了,于是我们可以用康托展开,降成8!. 康托展开其实 ...

  9. MAVEN 构建包的引用

    1.什么叫构建包的引用? 当你存在两个maven项目分别是项目A,项目B时,且项目B要引用项目A的方法,那么你就用把项目A打成*.jar架包,放到本地的Maven仓库提供给项目B去引用. A.用命令到 ...

  10. vue 如何清除定时器

    在页面中需要定时刷新局部数据,在数据变化是否频繁的情况下,没有必要使用webSocket,因为数据变化频繁,数据实时变化太快看不清楚.因此页面会定时调用后台接口以达到实时刷新数据的效果. 1.在dat ...