当前位置:编程学习 > C#/ASP.NET >>

怎么通过webBrowser自动提交表单 请高手修改一下

想弄个自动发帖的工具
发帖的地址是http://bbs.hongqiaowang.com/dispbbs.asp?boardid=10&id=144&page=1&star=1
在登录情况下我的代码是:
HtmlElement ClickBtn = null;
            HtmlDocument doc = webBrowser2.Document;
            doc.GetElementsByTagName("textarea")[0].InnerText = "fdfsdsddddddddd";
            
            for (int i = 0; i < doc.All.Count; i++)
            {
                //if (doc.All[i].TagName.ToUpper().Equals("INPUT"))
                //{
                //    switch (doc.All[i].Name)
                //    {
                //        case "body":
                //            doc.All[i].InnerHtml = "user01";
                //            break;
                //        //case "passCt1":
                //        //    doc.All[i].InnerText = "mypass";
                //        //    break;
                //        case "submit":
                //            ClickBtn = doc.All[i]; //提交按钮
                //            break;
                //    }
                //}
                if (doc.All[i].TagName.ToLower().Equals("textarea"))
                {
                    
                    doc.All[i].SetAttribute("value", "textBo");
                }
                if (doc.All[i].TagName.ToLower().Equals("input") & doc.All[i].Name.ToLower().Equals("submit"))
                { ClickBtn = doc.All[i]; }
            }
            ClickBtn.InvokeMember("Click");   //执行按扭操作
            }
        }


webBrowser2控件的Navigate就是发帖地址,执行后提示:←在您的贴子中没有检测到文字内容。
请教高人修改一下代码。 --------------------编程问答-------------------- 期待 --------------------编程问答-------------------- 自己顶i下 --------------------编程问答-------------------- 网上例子很多。。没必要就用这种方式, --------------------编程问答--------------------
引用 3 楼 zetee 的回复:
网上例子很多。。没必要就用这种方式,

没有找到 --------------------编程问答-------------------- 在页面载入webbrowser之后,程序自动填充用户名和密码,触发登陆按钮
 
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {

                string strUID = "userName@sdccn.com";
                string strPWD = "PWD";
                webBrowser1.Document.GetElementById("uid").InnerText = strUID;//fill name
                webBrowser1.Document.GetElementById("pwd").InnerText = strPWD;//fill pwd
                webBrowser1.Document.GetElementById("go").InvokeMember("click");//click go
              }

自动登录就这样实现,利用这些可以完成一些重复登录工作,还可以使用来自动化测试webpage程序。 --------------------编程问答-------------------- 是不是你没有等页面加载完就给表单元素赋值并且提交表单了? --------------------编程问答-------------------- webBrower控件实现winform和webpage交互
要求:
dom基础+javascript脚本
应用:
自动填充webform
抓取webpage数据
 
添加WebBrowser控件

private WebBrowser webBrowser1;引用页面的document对象

HtmlDocument doc = webBrowser1.Document;//get web document有了document对象,就可以像js一样操作doc,访问页面的所有对象。

HtmlElementCollection htmlElements = webBrowser1.Document.GetElementsByTag("input");//get all input elements
//access every input element in web form
foreach (HtmlElement el in htmlElements)
 {
                    strInputName = el.GetAttribute("name").ToString();//get input element's name
                    strInputValue = el.GetAttribute("value").ToString();//get input element's value
       }winForm调用webpage的函数

/**//*web page function*/
<script>
function jsMethod(var jsParam)
{
   alert(param);
}
</script>
/**//*call jsMethod from winForm*/
private void callJsMethod(string Param)
{
HtmlDocument doc = webBrowser1.Document;
doc.InvokeScript("jsMethod",new object[]{"called by winForm"});
}
webPage调用winForm方法

//winform code
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]//    
[System.Runtime.InteropServices.ComVisibleAttribute(true)]//This property lets you integrate dynamic HTML (DHTML) code with your client application code
public partial class Form2 : Form
{
    public void winFormMethod(string param)
        {
            MessageBox.Show(param);
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            webBrowser1.ObjectForScripting = this;//important
        }
}
//web page code
<input name="callWinMethod" onclick="window.external.winFormMethod('called from DHTML')">要调用winform的方法,这两个属性是必须的
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]  
[System.Runtime.InteropServices.ComVisibleAttribute(true)]
还有必须设置webBrowser1.ObjectForScripting = this,被调用的方法是public的。
有了上面这些准备要实现一些简单应用就很简单啦,不妨自己动手试试。
实例一
下面结合一个简单例子,使用webbrowser自动登录。
先分析webform的结构,下面这个登录页面包括两个输入框:用户名和密码,以及一个登录按钮。

<HTML>
    <HEAD>
        <title>test html</title>        
    </HEAD>
    <body background="/bugnet/graphics/back2.gif">
        <form name="mainform" method="post" action="bugl_login.aspx" id="mainform" >
            <b>Enter name</b><input id="uid" type="text" maxLength="50" size="25" name="uid"><br>
            <b>Enter Password</b><input type="password" maxLength="20" size="25" name="pwd">
            <input type="submit" value="go" name="go">
        </form>
    </body>
</HTML>在页面载入webbrowser之后,程序自动填充用户名和密码,触发登陆按钮。

 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {

                string strUID = "userName@sdccn.com";
                string strPWD = "PWD";
                webBrowser1.Document.GetElementById("uid").InnerText = strUID;//fill name
                webBrowser1.Document.GetElementById("pwd").InnerText = strPWD;//fill pwd
                webBrowser1.Document.GetElementById("go").InvokeMember("click");//click go
              }自动登录就这样实现,利用这些可以完成一些重复登录工作,还可以使用来自动化测试webpage程序。 --------------------编程问答-------------------- 用工具MiniSniff类似的工具跟踪一下看一下如何。。
看你手动提交的时候和程序提交的时候少了什么东西。。 --------------------编程问答--------------------
引用 5 楼 zhoufoxcn 的回复:
在页面载入webbrowser之后,程序自动填充用户名和密码,触发登陆按钮
C# codeprivatevoid webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {string strUID="userName@sdccn.com";string strPWD="PWD";
                webBrowser1.Document.GetElementById("uid").InnerText= strUID;//fill name                webBrowser1.Document.GetElementById("pwd").InnerText= strPWD;//fill pwd                webBrowser1.Document.GetElementById("go").InvokeMember("click");//click go              }
自动登录就这样实现,利用这些可以完成一些重复登录工作,还可以使用来自动化测试webpage程序。


这个可以实现,我说的功能不行 --------------------编程问答-------------------- 这个论坛的提交方式是采用ajax方式,不知道采用什么方法可以自动添加
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,