最近使用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方法
}
}
}