WebBrowser 自动向输入框中填写一个字符串 ( 积分: 50 )

  • 主题发起人 主题发起人 揽月
  • 开始时间 开始时间

揽月

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样在WebBrowser打开的网页的输入框中填写一个字符串?
我写了如下的程序,iELC.length的值为零,不知是哪里不对。

procedure TLoginForm.FormShow(Sender: TObject);
var
IDoc1: IHTMLDocument2;
iELC: IHTMLElementCollection;
HtmlInputEle2: IHtmlTextAreaElement;
spDisp: IDispatch;
i: Integer;
begin
WebBrowser1.Navigate(ExtractFilePath(Application.ExeName)+'URRP/Login.htm');
WebBrowser1.Document.QueryInterface(IHTMLDocument2, IDoc1);
if IDoc1 <> nil then
begin
iELC := IDoc1.all;
for i:=0 to iELC.length-1 do
begin
spDisp := iELC.item(i,0);
if SUCCEEDED(spDisp.QueryInterface(IHtmlTextAreaElement,HtmlInputEle2))then
begin
if UPPERCASE(HtmlInputEle2.name) = 'USERNAME' then
HtmlInputEle2.value := 'Admin'
end;
end;
end;
end;
 
你代码位置不对,你刚Navigate一个URL以后,页面还没打开呢,你就取document肯定取不到
你把WebBrowser1.Navigate(ExtractFilePath(Application.ExeName)+'URRP/Login.htm');
后面的代码全写到documentcomplete事件里
 
代码挪到documentcomplete事件里了,还是无法自动填充。
 
那你试试这么写:
var
edt:olevariant;
begin
if IDoc1 <> nil then
begin
edt := iELC.item('USERNAME',0);
edt.value := 'Admin';
end;
end;
 
不行啊,报错了,“存取地址违例”
 
.......我试了个测试页面没问题.....可能是你页面本身没那么简单,是不是用了iframe?你把页面源码发出来看看
 
后退
顶部