怎么通过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下 --------------------编程问答-------------------- 网上例子很多。。没必要就用这种方式, --------------------编程问答--------------------
没有找到 --------------------编程问答-------------------- 在页面载入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类似的工具跟踪一下看一下如何。。
看你手动提交的时候和程序提交的时候少了什么东西。。 --------------------编程问答--------------------
这个可以实现,我说的功能不行 --------------------编程问答-------------------- 这个论坛的提交方式是采用ajax方式,不知道采用什么方法可以自动添加
补充:.NET技术 , C#