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

来源:互联网 发布:wps的数据分析在哪里 编辑:程序博客网 时间:2024/05/21 10:43

一、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;                    
                    }
                }
            }        

原创粉丝点击