WebBrowser如何控制Frame下面的元素

WebBrowser如何控制Frame下面的元素;使用TWebBrower控件访问一个有两个Fra;webbrowser1.oleobject.do;webbrowser1.oleobject.do;可以取得取得指定Frame中的HTML内容;var;i,j:integer;;begin;memo1.Clear;;i:=webbrowser1.oleobje




WebBrowser如何控制Frame下面的元素

使用TWebBrower控件访问一个有两个Frame的网页,我可以获得两个Frame,如何进一步访问Frame下面的元素呢

webbrowser1.oleobject.document.documentelement.document.frames.length可以得到Frame的数量.

webbrowser1.oleobject.document.documentelement.document.frames.item(j).document.documentelement.innerHtml

可以取得取得指定Frame中的HTML内容

var

i,j:integer;

begin

memo1.Clear;

i:=webbrowser1.oleobject.document.documentelement.document.frames.length;// 得到 frame 的数量。

memo1.Lines.Add('have Frames: '+inttostr(i));

for j:=0 to i-1 do

begin

memo1.lines.add('');

memo1.Lines.Add('Frame '+inttostr(j+1)+' from here');

memo1.Lines.Add(webbrowser1.oleobject.document.

documentelement.document.frames.item(j).document.documentelement.innerHtml);// 取得每个 Frame 中的 HTML 内容

end; end;

利用Delphi的Olevariant类型

单个frames的输入

var

o : Olevariant;

begin

o := WebBrowser.OleObject.document.all.item('LoginUserID',0); //找到登录用户名的输入框

o.value := 'TEST';

o := WebBrowser.oleobject.document.all.item('LoginPassword',0); //找到登录密码的输入框

o.value := 'TEST'

WebBrowser.oleobject.document.Forms.Item(0, 0).submit; //第一个表单的第一个提交按纽

{ o :=WebBrowser.oleobject.document.all.item('Login',0); //或者用指定表单名称提交

o.Click; //点击操作,对其它对象也可同样操作}

end;

多个frames的输入,FrameIndex为Frame的序号

var

o : Olevariant;

begin

//找到登录用户名的输入框

o :=

WebBrowser.oleobject.document.documentelement.document.frames.item(FrameIndex).document.all.item('LoginUserID',0);

o.value := 'TEST';

//找到登录密码的输入框

o :=

WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.all.item('LoginPassword',0);

o.value := 'TEST'

//第一个表单提交

WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.Forms.Item(0, 0).submit;

{//或者用指定表单名称提交

o :=WebBrowser.oleobject.document.documentelement.document.frames.item(FramIndex).document.all.item('Login',0);

o.Click; //点击操作,对其它对象也可同样操作} end;

1、老外写的:

procedure TForm1.Button2Click(Sender: TObject);

var

i:Integer;

begin

Listbox1.Clear;

//if frames available

if Webbrowser1.OleObject.Document.Frames.Length <> 0 then begin

//walk through all frames and get the url

//to the Listbox

for i:=0 to Webbrowser1.OleObject.Document.Frames.Length -1 do begin

Listbox1.Items.Add(Webbrowser1.OleObject.Document.Frames.item(i).Document.URL);

end;

end;

end;

2、我用IHTMLFRAMECOLLECTION2写的。

procedure TForm1.Button5Click(Sender: TObject);

var

i:integer;

j:olevariant;

doc:ihtmldocument2;

frameele:ihtmlframescollection2;

oneframe:Ihtmlwindow2;

spdisp:idispatch;

begin

doc:=webbrowser1.document as ihtmldocument2;

frameele:=doc.frames;

for i:= 0 to frameele.length-1 do begin

j:=i;

spDisp:=Frameele.item(j);

if SUCCEEDED(spDisp.QueryInterface(IHTMLWindow2 ,oneframe))then memo1.Lines.Add(oneframe.document.title);

end;

end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值