如何用delphi打开指定IE链接后,自动填写表单(不是用WebBrowser)(20分)

  • 主题发起人 主题发起人 hansha
  • 开始时间 开始时间
H

hansha

Unregistered / Unconfirmed
GUEST, unregistred user!
不用WebBrowser,而是直接调用IE打开链接后,再自动填写表单
原有代码:
IEApp:= CreateOLEObject('InternetExplorer.Application');
IEApp.Navigate('http://www.delphibbs.com');
后续该如何写就不知道了
 
下面的代码完成了打开Google,在编辑框中填入文本,并点击搜索按钮这三个动作:

uses
ComObj, ActiveX, MSHTML;

procedure TForm1.Button1Click(Sender: TObject);
var
IEApp:OleVariant;
iDoc1,e:OleVariant;
begin
IEApp:= CreateOLEObject('InternetExplorer.Application');
IEApp.Visible:=true;
IEApp.Navigate('http://www.google.com');
Sleep(3000); //等待网页加载完毕
iDoc1:=IEApp.Document;
e:=iDoc1.f.q;
e.Value:='Delphi BBS';
Sleep(1000);
iDoc1.f.btnG.Click;
end;
 
这玩意有个毛病
就是当前系统已经存在ie进程的话/他不会起用新进程/而是共用一个进程
如果能解决这个问题就好了
 
而且如果你的默认浏览器是 其他的浏览器的话,他是打开其他浏览器。
 
看了网页源码,正好学习一下。
<form action="/search" name=f> 这个表示一个form,name是f。
是不是有点类似D的form意思,就是上面放控件。

<table cellpadding=0 cellspacing=0>

<tr valign=top><td width=25%>&amp;nbsp;</td><td align=center nowrap>

<input name=hl type=hidden value=zh-CN>

<input autocomplete="off" maxlength=2048 name=q size=55 title="Google 搜索" value="">
这个就是输入内容 搜索框。name是q,相当于D里 的一个edit。

<br>

<input name=btnG type=submit value="Google 搜索">
这个是搜索按钮。
<input name=btnI type=submit value="&amp;nbsp;手气不错&amp;nbsp;"></td>
 
上面几位研究的这些,恰恰是多数网站和网页希望禁止的!
从理论上,通过编程的方式自动、或批量、或大量执行本来应该人工交互的页面提交一般多是恶意的。

验证码可以部分防止自动化提交。

获取客户端的地址及Mac地址,判断时间间隔是否小于某个值也能部分防止自动化提交,甚至可以纳入黑名单管理。

我倒是建议不要做过多这种研究。(当然,如果原帖主人是考虑针对自已或本单位站点的正常操作,那是另外一回事)
 
参照creation-zy的解答部分网站可以。但是有的网站进入填表时,系统出现“Method 'loginForm' not supported by automation object”,造成无法对表单控件进行填写,请再指点

做这个主要是用于单位多个B/S应用系统登录操作
 
经测试,通过以下方法解决问题,供大家参考
iname:=iDoc1.getelementbyid(iu); //获取用户名输入位置
iname.Value:=tu;
 
很好 我也想补充但是我不会, 所以我要继续学习!
 

Similar threads

D
回复
0
查看
930
DelphiTeacher的专栏
D
D
回复
0
查看
871
DelphiTeacher的专栏
D
D
回复
0
查看
945
DelphiTeacher的专栏
D
D
回复
0
查看
911
DelphiTeacher的专栏
D
D
回复
0
查看
777
DelphiTeacher的专栏
D
后退
顶部