您的位置:首页 > 其它

webBroswer自动提交表单 webBroser过滤某些标签元素 webBroswer截取网页部分内容 webBroswer 获取 iframe里的元素

2013-11-29 11:47 691 查看
一、webBroswer自动提交表单(以百度账号登陆为例)

1、新建一个winform项目

2、在winform拖入一个webBroswer控件

3、双击webBroswer控件,写入代码

namespace AutoSummit

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

webBrowser1.Navigate("https://passport.baidu.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2F");

webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);

}

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

{

HtmlElement textSubmit = webBrowser1.Document.All["TANGRAM__3__userName"];

HtmlElement textpswd = webBrowser1.Document.All["TANGRAM__3__password"];

HtmlElement btnSubmit = webBrowser1.Document.All["TANGRAM__3__submit"];

if (textSubmit == null || textpswd == null || btnSubmit == null)

return;

textSubmit.SetAttribute("value","XXXX"); // XXXX为百度账号

textpswd.SetAttribute("value", "XXXX"); //XXXX 为密码

btnSubmit.InvokeMember("click");

}

}

}

二、webBroswer过滤某些元素显示其为不可见,webBroswer截取网页部分内容 (如将id为btnBack的按钮元素过滤掉让他不可见)

private void displayNonebtnBack()

{

HtmlElement back = webBrowser1.Document.All["btnBack"];

if (back == null)

{

return;

}

back.Style = "display:none";

}

PS:我在网上经常看到有同学说想让webBroswer只显示网页一部分的内容,或者webBroswer截取网页部分内容,就是过滤掉一些内容,网上很多的说法都是将整个网页的源码下载下来,然后再将需要的标签源码写到webBroswer里去,但是这个做法有一个不好的地方就是javascript的内容不好处理,所以这个display:none的方法是我觉得一个比较好的方法,整个网页的源码也不需要下载,只需要在将过滤掉的标签不显示,displayNone这个函数写在webBrowser1_DocumentCompleted()这个函数里,这样页面加载的时候便可以自动将不需要显示的内容过滤掉,即实现webBroswer截取网页部分内容的功能。

三、webBroswer 获取 iframe里的元素

HtmlElement BTNNext = webBrowser1.Document.Window.Frames["frame_main"].Document.All["BTNNext"]; //frame_main为iframe的id或者name

四、webBroswer 将iframe里div 标签的元素设置为不可见

foreach (HtmlElement he in webBrowser1.Document.Window.Frames["frame_main"].Document.GetElementsByTagName("div"))

{

if (he.GetAttribute("className") == "Pay-TypeTab")

{

he.Style = "display:none";

}

if (he.GetAttribute("className") == "ttlbox")

{

he.Style = "display:none";

}

}

foreach (HtmlElement he in webBrowser1.Document.Window.Frames["frame_main"].Document.GetElementsByTagName("a"))

{

if (he.GetAttribute("tabIndex").StartsWith("-1"))

{

he.Style = "display:none";

}

}

webBroswer 获取div 标签子标签

foreach (HtmlElement getMoible in webBrowser1.Document.GetElementsByTagName("div"))

{

if (getMoible.GetAttribute("className") == "getMoible")

{

foreach (HtmlElement he in getMoible.Children)

{

he.InvokeMember("click");

}

}

}

webBroswer 获取div 标签的子标签span 里的文本内容,如要获取 “我是没有id的标签1”这个文本

如:有<div class="getMoible" >

<span>

我是没有id的标签1

</span>

</div>

<div class="getMoible2" >

<span>

我是没有id的标签2

</span>

</div>

没有id 的div 和span,可以这样获取文本内容

foreach (HtmlElement getMoible in webBrowser1.Document.GetElementsByTagName("div"))

{

if (getMoible.GetAttribute("className") == "getMoible")

{

textBox1.Visible = false;

foreach (HtmlElement he in getMoible.Children)

{

label1.Text = he.InnerText;

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: