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;
}
}
}
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;
}
}
}
相关文章推荐
- 关于c#的webbrows控件自动填写表单并获取提交后的网页内容
- php过滤html标签截取部分内容
- ajax异步提交失败弹出遮罩层和jquery.validate自动校验和iframe父窗口元素获取与遮罩问题
- Delphi自动提交网页表单和获取框架网页源码
- html form 表单提交过滤某些input元素
- 设计自动获取网页和提交表单组件
- 设计自动获取网页和提交表单组件
- 设计自动获取网页和提交表单组件
- puppeteer 抓取网页内容。在另外一个页面显示,并自动提交表单
- jQuery的ajax表单提交,获取元素内容方法
- js获取多个标签元素的内容,并根据元素的内容修改标签的属性
- 网页表单自动提交
- Delphi实现网页表单数据的自动提交
- Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID,反之也行!
- jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
- 模拟Form 的POST方式提交表单 获取网页快照
- Delphi7 Webbrowser制作网页表单自动提交器按步分析(1)
- php实现过滤表单提交中html标签的方法
- Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID
- js来获取嵌套的子页面iframe里面的html和form表单中元素值