如何自动填写网页表单,并自动提交

a0910472 2013-05-11 05:07:27
我的想法是完全模拟人工操作,但是遇到一个困难:怎样快速定位网页输入框。另外,这种模拟人工操作的方法效率较低。求一个效率高一点的方法
...全文
1352 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不懂电脑 2013-05-13
  • 打赏
  • 举报
回复
这个用c#很容易实现,用BCB的话要调用ihtml api比较复杂,给你个c#的资料 。 在.Net 2.0中,整个HTML文档以及其包含的各个HTML元素,都和一个个HtmlDocument、HtmlElement之类的.Net对象对应。因此只要找到这个“关闭”按钮对应的HtmlElement对象,为其click事件添加Event Handler即可。 HTML code <html><body><input type="button" id="btnClose" value="关闭"/></body></html> 那么找出该按钮并为之添加Event Handler的代码如下: C# codeHtmlDocument htmlDoc = webBrowser.Document; HtmlElement btnElement = htmlDoc.All["btnClose"]; if (btnElement !=null) { btnElement.click+=new HtmlElementEventHandler(HtmlBtnClose_Click); } 其中 HtmlBtnClose_Click是按下Web按钮时的Event Handler。 很简单吧?那么稍稍高级一点的——我们都知道一个HTML元素可能有很多各种各样的事件,而HtmlElement这个类只给出最常用、共通的几 个。那么,如何响应其他事件呢?这也很简单,只需要调用HtmlElement的AttachEventHandler就可以了: C# codebtnElement.AttachEventHandler("onclick", new EventHandler(HtmlBtnClose_Click)); //这一句等价于上面的 btnElement.click += new HtmlElementEventHandler(HtmlBtnClose_Click); 对于其他事件,把"onclick"换成该事件的名字就可以了。例如: C# code formElement.AttachEventHandler("onsubmit", new EventHandler(HtmlForm_Submit)); ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 要使我们的WebBrowser具有自动填表、甚至自动提交的功能,并不困难。 假设有一个最简单的登录页面,输入用户名密码,点“登录”按钮即可登录。已知用户名输入框的id(或Name,下同)是username,密码输入 框的id是password,“登录”按钮的id是submitbutton,那么我们只需要在webBrowser的 DocumentCompleted事件中使用下面的代码即可: C# codeHtmlElement btnSubmit = webBrowser.Document.All["submitbutton"]; HtmlElement tbUserid = webBrowser.Document.All["username"]; HtmlElement tbPasswd = webBrowser.Document.All["password"]; if (tbUserid ==null|| tbPasswd ==null|| btnSubmit ==null) return; tbUserid.SetAttribute("value", "smalldust"); tbPasswd.SetAttribute("value", "12345678"); btnSubmit.InvokeMember("click"); 这里我们用SetAttribute来设置文本框的“value”属性,用InvokeMember来调用了按钮的“click” 方法。因为不同的Html元素,其拥有的属性和方法也不尽相同,所以.Net 2.0提供了统一的HtmlElement来概括各种Html元素的同时,提供了这两个方法以调用元素特有的功能。关于各种Html元素的属性和方法一 览,可以查阅MSDN的DHTML Reference。 ※关于表单的提交,的确还有另一种方法就是获取form元素而不是button,并用form元素的 submit方法: C# codeHtmlElement formLogin = webBrowser.Document.Forms["loginForm"]; //……formLogin.InvokeMember("submit");本文之所以没有推荐这种方法,是因为现在的网页,很多都在submit按钮上添加onclick事件,以对提交的内容做最基本的验证。如果直接使用form的submit方法,这些验证代码就得不到执行,有可能会引起错误
dataxdata 2013-05-12
  • 打赏
  • 举报
回复
找HTML代码中的form、input之类,把表单的结构提取出来,然后自己生成一个GET或POST请求发给服务器就行了
laqhelen 2013-05-11
  • 打赏
  • 举报
回复
实现HTTP协议,这有HTTP的例子WebClnt,你看看: http://download.csdn.net/detail/geoff08zhang/4571358

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧