webBrowser(网络转载)

C#WebBrowser控件使用教程与技巧收集--苏飞收集

先来看看常用的方法

[C#] 纯文本查看 复制代码

?


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

Navigate(string urlString):浏览urlString表示的网址

Navigate(System.Uri url):浏览url表示的网址

Navigate(string urlString, string targetFrameName, byte[] postData, string additionalHeaders): 浏览urlString表示的网址,并发送postData中的消息

//(通常我们登录一个网站的时候就会把用户名和密码作为postData发送出去)

GoBack():后退

GoForward():前进

Refresh():刷新

Stop():停止

GoHome():浏览主页

WebBrowser控件的常用属性:

Document:获取当前正在浏览的文档

DocumentTitle:获取当前正在浏览的网页标题

StatusText:获取当前状态栏的文本

Url:获取当前正在浏览的网址的Uri

ReadyState:获取浏览的状态

WebBrowser控件的常用事件:

DocumentTitleChanged,

CanGoBackChanged,

CanGoForwardChanged,

DocumentTitleChanged,

ProgressChanged,

ProgressChanged

DocumentCompleted 页面加载完成之后的事件

复制代码

1、获取非input控件的值:

[C#] 纯文本查看 复制代码

?


01

02

03

webBrowser1.Document.All["控件ID"].InnerText;

或webBrowser1.Document.GetElementById("控件ID").InnerText;

或webBrowser1.Document.GetElementById("控件ID").GetAttribute("value");

2.获取input控件的值:

[C#] 纯文本查看 复制代码

?


01

02

webBrowser1.Document.All["控件ID"].GetAttribute("value");;

或webBrowser1.Document.GetElementById("控件ID").GetAttribute("value");

3、给输入框赋值:

[C#] 纯文本查看 复制代码

?


01

02

03

04

//输入框

user.InnerText = "myname";

password.InnerText = "123456";

webBrowser1.Document.GetElementById("password").SetAttribute("value", "Welcome123");

4、下拉、复选、多选:

[C#] 纯文本查看 复制代码

?


01

02

03

04

05

06

//下拉框:

secret.SetAttribute("value", "question1"); 

//复选框

rememberme.SetAttribute("Checked", "True");

//多选框

cookietime.SetAttribute("checked", "checked");

5、根据已知有ID的元素操作没有ID的元素:

[C#] 纯文本查看 复制代码

?


01

HtmlElement btnDelete = webBrowser1.Document.GetElementById(passengerId).Parent.Parent.Parent.Parent.FirstChild.FirstChild.Children[1].FirstChild.FirstChild;

根据Parent,FirstChild,Children[1]数组,多少层级的元素都能找到。
6、获取Div或其他元素的样式:

[C#] 纯文本查看 复制代码

?


01

webBrowser1.Document.GetElementById("addDiv").Style;

7、直接执行页面中的脚本函数,带动态参数或不带参数都行:

[C#] 纯文本查看 复制代码

?


01

02

03

04

Object[] objArray = new Object[1];

objArray[0] = (Object)this.labFlightNumber.Text;

webBrowser1.Document.InvokeScript("ticketbook", objArray);

webBrowser1.Document.InvokeScript("return false");

8、自动点击、自动提交:

[C#] 纯文本查看 复制代码

?


01

02

HtmlElement btnAdd = doc.GetElementById("addDiv").FirstChild;

btnAdd.InvokeMember("Click");

9、自动赋值,然后点击提交按钮的时候如果出现脚本错误或一直加载的问题,一般都是点击事件执行过快,这时需要借助Timer控件延迟执行提交按钮事件:

[C#] 纯文本查看 复制代码

?


01

02

03

04

05

06

07

this.timer1.Enabled = true;

this.timer1.Interval = 1000 * 2;

private void timer1_Tick(object sender, EventArgs e)

{

    this.timer1.Enabled = false;

    ClickBtn.InvokeMember("Click");//执行按扭操作

}

10、屏蔽脚本错误:

[C#] 纯文本查看 复制代码

?


01

将WebBrowser控件ScriptErrorsSuppressed设置为True即可

11、自动点击弹出提示框:

[C#] 纯文本查看 复制代码

?


01

02

03

04

05

06

07

private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e)

{

  //自动点击弹出确认或弹出提示

  IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;

  vDocument.parentWindow.execScript("function confirm(str){return true;} ", "javascript"); //弹出确认

  vDocument.parentWindow.execScript("function alert(str){return true;} ", "javaScript");//弹出提示

}

12.WebBrowser页面加载完毕之后,在页面中进行一些自动化操作的时候弹出框的自动点击(屏蔽)

[C#] 纯文本查看 复制代码

?


01

02

03

04

05

06

07

08

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

{

    //自动点击弹出确认或弹出提示

    IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument;

    vDocument.parentWindow.execScript("function confirm(str){return true;} ", "javascript"); //弹出确认

    vDocument.parentWindow.execScript("function alert(str){return true;} ", "javaScript");//弹出提示

    //下面是你的执行操作代码

}

13、获取网页中的Iframe,并设置Iframe的src

[C#] 纯文本查看 复制代码

?


01

02

03

04

HtmlDocument docFrame = webBrowser1.Document.Window.Frames["mainFrame"].Document;

HtmlDocument docFrame = webBrowser1.Document.All.Frames["mainFrame"].Document;

docFrame.All["mainFrame"].SetAttribute("src", "http://www.sufeinet.com/");

网页中存在Iframe的时候webBrowser1.Url和webBrowser1_DocumentCompleted中的e.Url不一样,前者是主框架的Url,后者是当前活动框口的Url。
14、让控件聚焦

[C#] 纯文本查看 复制代码

?


01

02

03

this.webBrowser1.Select();

this.webBrowser1.Focus();

doc.All["TPL_password_1"].Focus();

15、打开本地网页文件

[C#] 纯文本查看 复制代码

?


01

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

16、获取元素、表单

[C#] 纯文本查看 复制代码

?


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

//根据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;

}

//获取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);

}

17。获取Cookie

[C#] 纯文本查看 复制代码

?


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]

      static extern bool InternetGetCookieEx(string pchUrl, string pchCookieName, StringBuilder pchCookieData, ref System.UInt32 pcchCookieData, int dwFlags, IntPtr lpReserved);

      private static string GetCookieString(string url)

      {

          uint datasize = 1024;

          StringBuilder cookieData = new StringBuilder((int)datasize);

          if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x2000, IntPtr.Zero))

          {

              if (datasize < 0)

                  return null;

              cookieData = new StringBuilder((int)datasize);

              if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, IntPtr.Zero))

                  return null;

          }

          return cookieData.ToString();

      }

      private void webBrowser1_DocumentCompleted_1(object sender, WebBrowserDocumentCompletedEventArgs e)

      {

          richTextBox1.Text = string.Empty;

          if (cbcookie.Checked)

          {

              if (checkBox1.Checked)

              {

                  richTextBox1.Text = GetCookieString(textBox1.Text.Trim());

              }

              else

              {

                  richTextBox1.Text = webBrowser1.Document.Cookie;

              }

          }

      }

18.怎么设置代理
http://www.sufeinet.com/thread-2242-1-1.html
19.怎么在加载完成某个页面之后执行代码

[C#] 纯文本查看 复制代码

?


01

02

03

04

05

06

07

08

09

10

11

12

13

//本事件是当每次加载完成当前页面后才会执行的

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

        {

            //e.Url是当前加载的页面,

            if (e.Url.ToString().Contains("http://sufeinet.com"))

            {

                //执行操作1

            }

            else if (e.Url.ToString().Contains("http://baidu.com"))

            {

                //执行操作2

            }

        }

20.怎么禁止在新窗口中打开网页

[C#] 纯文本查看 复制代码

?


01

02

03

04

05

06

07

private void webBrowser1_NewWindow(object sender, CancelEventArgs e)

{

        string url = ((System.Windows.Forms.WebBrowser)sender).StatusText;

        webBrowser1.Navigate(url);

        e.Cancel = true;

    

}

21.怎么设置Cookie

[C#] 纯文本查看 复制代码

?


01

webBrowser1.Document.Cookie=“你的Cookie值”;

时间: 2024-10-17 03:45:47

webBrowser(网络转载)的相关文章

网络转载:局域网安全:解决ARP攻击的方法和原理

局域网安全:解决ARP攻击的方法和原理 IT世界网2006-01-26 10:17 [故障原因] 局域网内有人使用ARP欺骗的木马程序(比如:传奇盗号的软件,某些传奇外挂中也被恶意加载了此程序). [故障原理] 要了解故障原理,我们先来了解一下ARP协议. 在局域网中,通过ARP协议来完成IP地址转换为第二层物理地址(即MAC地址)的.ARP协议对网络安全具有重要的意义.通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞. ARP协议是“Address Re

[网络转载 ]LoadRunner技巧之THML与URL两种录制模式分析

loadrunner自带网站的访问 Html_based script模式 Action() { web_url("WebTours", "URL=http://127.0.0.1:1080/WebTours/", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t1.inf", "Mode=HTM

Makefile &lt;网络转载&gt;

陈皓 (CSDN)概述——什 么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解 HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完 成大型工程的能力.因为,makefil

Powershell 脚本判断制定路径下文件是否存在(来源于网络-转载)

$filelist=gc "file.txt" #获取要检查的文件列表 $csvs= new-object collections.arraylist #创建一个arraylist对象 foreach($file in $filelist){ $csv=new-psobject|select yes,no if([io.Directory]::Exists($file)){ #判断文件是否存在 $csv.yes=$file }else{ $csv.no=$file } $null=$c

LAMP 系统性能调优之网络文件系统调优

LAMP 系统性能调优之网络文件系统调优 2011-03-21 09:35 Sean A. Walberg 网络转载 字号:T | T 使用LAMP系统的用户,都想把自己LAMP性能提高运行的速度提高,那它有一点可以调优: 网络文件系统 ,我们知道网络文件系统是网络共享磁盘的一个系统,我们来进行调优下! AD:2014WOT全球软件技术峰会北京站 课程视频发布 图-LAMP LAMP网络文件系统调优 网络文件系统(NFS)是一种通过网络共享磁盘的方法.NFS 可以帮助确保每个主机具有相同数据的拷

UNIX网络编程——getsockname和getpeername函数

UNIX网络编程——getsockname和getpeername函数 来源:网络转载   http://www.educity.cn/linux/1241293.html 这两个函数或者返回与某个套接字关联的本地协议地址(getsockname),或者返回与某个套接字关联的外地协议地址即得到对方的地址(getpeername). #include <sys/socket.h> int getsockname(int sockfd,struct sockaddr* localaddr,sock

mysql分页原理和高效率的mysql分页查询语句

该博来自网络转载!!!供自己学习使用!!! 以前我在mysql中分页都是用的 limit 100000,20这样的方式,我相信你也是吧,但是要提高效率,让分页的代码效率更高一些,更快一些,那我们又该怎么做呢? 第一部分:看一下分页的基本原理: 代码如下: mysql explain SELECT * FROM message ORDER BY id DESC LIMIT 10000, 20***************** 1. row **************id: 1select_typ

Linux -- Ubuntu 命令

一.文件目录类 1.建立目录:mkdir 目录名 2.删除空目录:rmdir 目录名 3.无条件删除子目录: rm -rf 目录名 4.改变当前目录:cd 目录名 (进入用户home目录:cd ~:进入上一级目录:cd -) 5.查看自己所在目录:pwd 6.查看当前目录大小:du 7.显示目录文件列表:ls -l (-a:增加显示隐含目录) 其中:蓝:目录:绿:可执行文件:红:压缩文件:浅蓝:链接文件:灰:其他文件:红底白字:错误的链接文件 8.浏览文件:more 文件名.txt:less 文

Python第一天(下):sublime text 3 快捷键大全以及配置编译环境

内容为网络转载 Sublime text 3是码农最喜欢的代码编辑器,每天和代码打交道,必先利其器,掌握基本的代码编辑器的快捷键,能让你打码更有效率.刚开始可能有些生疏,只要花一两个星期坚持使用并熟悉这些常用的快捷键! Sublime text 3是码农最喜欢的代码编辑器,每天和代码打交道,必先利其器,掌握基本的代码编辑器的快捷键,能让你打码更有效率.刚开始可能有些生疏,只要花一两个星期坚持使用并熟悉这些常用的快捷键!其实sulime text菜单栏各个选项中都会提示相关的快捷键,各位可以自己去