Delphi实现网页表单数据的自动提交

简介:     MSHTML是微软公司的一个COM组件,该组件封装了HTML语言中的所有元素及其属性,通过其提供的标准接口,可以访问指定网页的所有元素. MSHTML对象模型是由一些对象和集合组成的.处于根部的是HTML,描述了打开页面的1个窗口,包括一系列集合和对象。如Frames集合,History,Location,Navigator,Document,Vi—sum,Event对象等.其中
 

 

MSHTML是微软公司的一个COM组件,该组件封装了HTML语言中的所有元素及其属性,通过其提供的标准接口,可以访问指定网页的所有元素.

MSHTML对象模型是由一些对象和集合组成的.处于根部的是HTML,描述了打开页面的1个窗口,包括一系列集合和对象。如Frames集合,History,Location,Navigator,Document,Vi—sum,Event对象等.其中描述呈现在客户窗口实际网页的是Document对象。由一系列的属性、方法、对象和集合组成.其中All集合中包含网页中所有标记(Tag)元素,其主要的方法和属性有:

(1)Length(长度):即标记出现的个数,可以把标记的集合理解为从0开始的一维数组,其次序按照标记在网页位置排列;

(2)Tags(标记):用于过滤出给定标记的集合,如Doc.Al1.Tags(P)得到所有分段标记P;

(3)Item(项目):用于选择集合中的某1个元素,如object.item(0)得到集合的第1个元素,而object.item(i)得到第i+1个元素.

此外,IHTMLElement也是个常用的集合对象,代表网页中指定标记的集合,通过这个集合对象,可以得到网页上特定标记的内容.IHTMLElement有4个主要属性:

(1)InnerText:开始标记和结束标记之间的文本;

(2)InnerHTML:开始标记和结束标记之间的文本和HTML;

(3)OuterText:对象的文本;

(4)OuterHTML:对象的文本和HTML.

procedure TForm1.Button1Click(Sender: TObject);

var

Doc:IHTMLDocument2;

input:OleVariant;

userinputelement,pwdinputelement:ihtmlinputelement;

begin

doc:=webbrowser1.document as ihtmldocument2;

userinputelement:=(doc.all.item('user'(也就是网页中用户名控件的名字),0) as ihtmlinputelement);

userinputelement.value:=edit1.text;(也就是你要向网页输入的东西)

pwdinputelement:=(doc.all.item('password',0) as ihtmlinputelement);

pwdinputelement.value:=edit2.text;

input:=doc.all.item('submit',0);

input.click;

end;

当提交数据按钮没有NAME属性时,采用如下方法:

procedure TForm1.Button1Click(Sender: TObject);

var

Doc:IHTMLDocument2;

form:ithmlformelement;

userinputelement,pwdinputelement:ihtmlinputelement;

 

begin

doc:=webbrowser1.document as ihtmldocument2;

userinputelement:=(doc.all.item('user'(也就是网页中用户名控件的名字),0) as ihtmlinputelement);

userinputelement.value:=edit1.text;(也就是你要向网页输入的东西)

pwdinputelement:=(doc.all.item('password',0) as ihtmlinputelement);

pwdinputelement:=edit2.text;

form:=(doc.all.item('login_form',0) as ihtmlformelement):

form.submit;

end;

登录"按钮一般都是网页中默认的回车按钮,所以可以用上面代码来代替前面的点击按钮。

相关文章
|
前端开发
【前端异常】html页面中的button按钮会自动提交form表单的问题以及解决方案
有时候我们可能需要在表单中放置多个按钮,比如表单页面常见的按钮有创建和取消。点击创建按钮会触发单击响应事件,在单击响应事件中进行提交表单,这没有任何问题。点击取消按钮的时候,触发对应的单击响应事件,这个单击响应事件中主要处理关闭表单页面逻辑,所以会关闭页面,这也正常。但是!打开控制台监听请求会发现,它也会提交表单。
519 0
【前端异常】html页面中的button按钮会自动提交form表单的问题以及解决方案
|
前端开发 JavaScript 数据安全/隐私保护
form表单常见控件应用,实例讲解注册页面的开发【2020网页综合笔记03】
form表单常见控件应用,实例讲解注册页面的开发【2020网页综合笔记03】
159 0
form表单常见控件应用,实例讲解注册页面的开发【2020网页综合笔记03】
|
前端开发
前端工作小结59-表单重置项目处理
前端工作小结59-表单重置项目处理
82 0
|
前端开发
前端工作小结60-表单重置
前端工作小结60-表单重置
63 0
|
SQL
【自然框架】表单控件 之 一个表单修改多个表里的记录
      FormView 确实挺方便的,不过他也有几个小问题,只把FormView拖到页面里是不行的,还得再拽几个文本框、下拉列表框这一类的控件,还得布局。然后还要弄一个DataSource的控件,利用这个控件把文本框等控件和字段对应上,DataSource也有一个致命的缺点,默认情况下,他是把SQL语句以属性的形式放在了.aspx页面里面。
883 0
|
SQL JavaScript 前端开发
【自然框架】之鼠标点功能现(二):表单控件的“应用”—— 代码?只写需要的!
  【自然框架】之鼠标点功能现(一):单表的增删改查(即上次5月23日活动的一个主题)【Demo、源码下载】           看了大家的回复,好像不少人误会了,我为了突出“鼠标点,功能现”,所以没有说代码,没有贴代码,这就让一些人认为我想要完全抛弃VS,自己写一个“平台”来代替,不好意思,您高估我了,我可达不到。
842 0
|
JSON 前端开发 网络架构
表单自动完成
public function rest() { $q = $this->request->get('q'); $dicts = Db::name($this->table)->where('dvalue','like','%'.
1067 0