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

来源:互联网 发布:送餐抢单软件哪个好 编辑:程序博客网 时间:2024/06/03 13:24

文章来自:http://www.sufeinet.com/thread-3941-1-1.html

先来看看常用的方法

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:获取当前正在浏览的网址的UriReadyState:获取浏览的状态WebBrowser控件的常用事件:DocumentTitleChanged,CanGoBackChanged,CanGoForwardChanged,DocumentTitleChanged,ProgressChanged,ProgressChangedDocumentCompleted 页面加载完成之后的事件

1、获取非input控件的值:
webBrowser1.Document.All["控件ID"].InnerText;或webBrowser1.Document.GetElementById("控件ID").InnerText;或webBrowser1.Document.GetElementById("控件ID").GetAttribute("value");
2.获取input控件的值:
webBrowser1.Document.All["控件ID"].GetAttribute("value");;或webBrowser1.Document.GetElementById("控件ID").GetAttribute("value");
3、给输入框赋值:
//输入框user.InnerText = "myname";password.InnerText = "123456";webBrowser1.Document.GetElementById("password").SetAttribute("value", "Welcome123");
4、下拉、复选、多选:
//下拉框:secret.SetAttribute("value", "question1");  //复选框rememberme.SetAttribute("Checked", "True");//多选框cookietime.SetAttribute("checked", "checked");
5、根据已知有ID的元素操作没有ID的元素:
HtmlElement btnDelete = webBrowser1.Document.GetElementById(passengerId).Parent.Parent.Parent.Parent.FirstChild.FirstChild.Children[1].FirstChild.FirstChild;
根据Parent,FirstChild,Children[1]数组,多少层级的元素都能找到。
6、获取Div或其他元素的样式:
webBrowser1.Document.GetElementById("addDiv").Style;
7、直接执行页面中的脚本函数,带动态参数或不带参数都行
Object[] objArray = new Object[1];objArray[0] = (Object)this.labFlightNumber.Text;webBrowser1.Document.InvokeScript("ticketbook", objArray);webBrowser1.Document.InvokeScript("return false");
8、自动点击、自动提交:
HtmlElement btnAdd = doc.GetElementById("addDiv").FirstChild;btnAdd.InvokeMember("Click");

9、自动赋值,然后点击提交按钮的时候如果出现脚本错误或一直加载的问题,一般都是点击事件执行过快,这时需要借助Timer控件延迟执行提交按钮事件:
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、屏蔽脚本错误:
将WebBrowser控件ScriptErrorsSuppressed设置为True即可
11、自动点击弹出提示框:
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页面加载完毕之后,在页面中进行一些自动化操作的时候弹出框的自动点击(屏蔽)

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

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、让控件聚焦
this.webBrowser1.Select();this.webBrowser1.Focus();doc.All["TPL_password_1"].Focus();
15、打开本地网页文件
webBrowser1.Navigate(Application.StartupPath + @"\Test.html");
16、获取元素、表单
//根据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
[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.怎么在加载完成某个页面之后执行代码
//本事件是当每次加载完成当前页面后才会执行的        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.怎么禁止在新窗口中打开网页
private void webBrowser1_NewWindow(object sender, CancelEventArgs e){        string url = ((System.Windows.Forms.WebBrowser)sender).StatusText;        webBrowser1.Navigate(url);        e.Cancel = true;     }

21.怎么设置Cookie

<span style="font-size:10px;color:#000000;">webBrowser1.Document.Cookie=“你的Cookie值”;</span>



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 药流半月同房第二天大出血怎么办 口臭想让它变得不臭怎么办 来单位干了几天不满意想离职怎么办 药流吃药期间吃什么吐什么怎么办 养狗家里味道大怎么办养花有用吗 第一天上班站的脚疼怎么办 入职没有人事所需要的证书怎么办 入职第一天后不想去了怎么办 警察在执法过程中殴打群众怎么办 肾结石打了3天针痛得厉害怎么办 征兵体检过了到部队退兵怎么办 圆通快递要求退回结果被签收怎么办 新生儿蛋蛋淹了破皮了怎么办 要是和同学玩的时候打到睾丸怎么办 睾丸撞了一下里面碎了怎么办 睾丸被蚊子咬了挠坏流水疼怎么办 沐浴乳大量的灌注到尿道里怎么办 当电脑显示有文件损害时怎么办? 电脑上的压缩包手机上打不开怎么办 第五人格多酷账号退出了怎么办 更新显卡驱动时屏幕关闭了怎么办 不知道杯孕做了两次C丁怎么办 小说签约后更不到要求的字数怎么办 电脑中了感染病毒杀不干净怎么办 电脑下载的软件有病毒了怎么办 电脑强制关机后开不了机怎么办 受刺激后出现精神异常该怎么办 当屏幕出现暂时无法移动时怎么办 英雄联盟欧服连接不上服务器怎么办 试客联盟认证手机号成空号了怎么办 汽车脚垫不贴合翘起来了怎么办 版权保护迅雷下载不了的资源怎么办 30岁在外地城市找不到工作怎么办 新买的苹果爱拍充不进去电是怎么办 绝地求生东南亚服匹配不到人怎么办 电脑卡住了怎么办鼠标也点不动 幽灵行动荒野没有主线任务了怎么办 拼多多购买的东西下架了怎么办 电脑版的荒野行动玩的时候卡怎么办 欧洲卡车模拟2气压过低怎么办 word页眉和正文有段距离怎么办