網頁自動填表(150分)

  • 主题发起人 主题发起人 jiichen
  • 开始时间 开始时间
J

jiichen

Unregistered / Unconfirmed
GUEST, unregistred user!
目前在做一個自動申請免費空間軟體,
需要用到自動填表,
使用 TEmbeddedWeb 控件,
Text、Submit、Radio 都能自動填入,
剩下 SELECT 沒辦法指定到目標,
雖知道使用 SelectedIndex ,
但是程式碼有問題,求助,
願出 150 大洋,謝謝。

部分程式碼如下:
var
doc: IHTMLDocument2;
all: IHTMLElementCollection;
item: OleVariant;

iELC : IHTMLElementCollection ;
HtmlInputEle : IHTMLInputElement;
HtmlSelEle:IHTMLSelectElement;
ioo:IHTMLOptionElement;
spDisp: IDispatch;
j : integer;
s2:string;

// -----------------------------
WebBrowser1.Document.QueryInterface(IHTMLDocument2,Doc);
if Doc <> nil then
begin
ielc:=doc.Get_all;

for j:=0 to ielc.length-1 do
begin
// 在除錯的過程中發現 ielc.length 會隨時變動,不知為何??
// 結果便秀出存取錯誤的訊息,應該問題就是在這裡!
Application.ProcessMessages;
spDisp := ielc.item(J, 0);


if SUCCEEDED(spDisp.QueryInterface(IHTMLselectelement ,HtmlSelEle))then
with HtmlSelEle do
begin
s2:=name;
s2:=UpperCase(s2);
if StrComp(PChar(S2),pchar(UpperCase(cc[ppp+1])))=0 then
begin
selectedIndex:=StrToInt(cc[ppp+2]);
break;
end; // if
end; // with
end; //END FOR

 
真不好意思,我不会。但我想知道“網頁自動填表”如何实现的。那里有TEmbeddedWeb
控件,如果你忙,可以不回答我。
 
網址在此
http://www.euromind.com/iedelphi/
建議從 Getting Started 開始看,它會教你
如何安裝!


至於如何實現,這怎麼講呢!?
不是我不告訴你,而是我也只是一知半解,
研究他人(elan)的程式碼,慢慢地往下推演,
就出來了!

成品在此(BIG5):
http://home.kimo.com.tw/lookbook2000/GetSpaces1.htm



來自:elan時間:00-7-21 15:54:50ID:289439
itemc.name

以下代碼獲取input得數值,你參考一下吧
procedure TForm1.PutData;
var
ShellWindow: IShellWindows;
nCount: integer;
spDisp: IDispatch;
i,j,X: integer;
vi: OleVariant;
IE1: IWebBrowser2;
IDoc1: IHTMLDocument2;
iELC : IHTMLElementCollection ;
S,S2 : string;
HtmlInputEle : IHTMLInputElement;
HtmlSelEle : IHTMLSelectElement;
begin
ShellWindow := CoShellWindows.Create;
nCount := ShellWindow.Count;

for i := 0 to nCount - 1 do
begin
vi := i;
spDisp := ShellWindow.Item(vi);
if spDisp = nil then continue;
spDisp.QueryInterface( iWebBrowser2, IE1 );
if IE1 <> nil then
begin
IE1.Document.QueryInterface(IHTMLDocument2,iDoc1);
if iDoc1 <> nil then
begin

ielc:=idoc1.Get_all;

for j:=0 to ielc.length-1 do
begin
Application.ProcessMessages;
spDisp := ielc.item(J, 0);
if SUCCEEDED(spDisp.QueryInterface(IHTMLInputElement ,HtmlInputEle))then
with HtmlInputEle do
begin
//htmlinputele.name 就是取得這個 input 的 name
S2:=Type_;
S2:=UpperCase(S2);
//我把所有的input都填上 try , checkbox 都打勾
if (StrComp(PChar(S2),'TEXT')=0) or (StrComp(PChar(S2),'PASSWORD')=0) then
value :='try' //S:=S+#9+Value
else if StrComp(PChar(S2),'CHECKBOX')=0 then
begin
checked := True;
end;
end;
if SUCCEEDED(spDisp.QueryInterface(IHTMLselectelement ,HtmlSelEle))then
with HtmlSelEle, Memo1.Lines do
begin
S:=S+#9+IntToStr(selectedIndex+1); //這個是獲取數據了
//HtmlselEle.name 就獲得這個selectelement地name了
end;
end; //END FOR
Memo2.Lines.Add(S);
exit;
end;
end;
end;
end;


 
谢谢您,我会慢慢研究的。
 
這問題已經解決了,可不可以
換個問題!

如何模擬按下網頁中的連結?
最好可以不使用 Navigator 或 Go 的方法來做,
我想知道是否還有其他方式!
 
這問題也解決了,怎麼老是自己回答自己呢?

再來個新題目吧!

如何將網頁上的圖片複製至 TBitmap 內?
要求一: 不可使用 TNMHTTP 之類的來利用圖片 url 來抓取,
因為 url 會改變,並且網站會搭配其他條件來秀出不同的圖,
這樣就跟網頁上的圖形不同了。
此圖形的類型有兩種(至少),
一是 IHtmlImgElement , 無疑問是圖形
一是 IHtmlInputElement ,Type=image 的圖形

此問題目前分數已提高至 300 分了,請參考
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=440957

兩題共 300 分!
 
能告诉我你是如何解决吗?对于下拉框如何自动填写,还有如何直接点击“提交”按钮?
盼回复!谢谢!
 
示範一段,要"選擇"下拉框中符合的字樣。


// 先判斷是否為 IHTMLSelectElement
if SUCCEEDED(spDisp.QueryInterface(IHTMLSelectElement ,HtmlSelEle))then
begin
s2:=(HtmlSelEle.name); // 得到下拉框的名稱了

if AnsiSameText(S2,name) then
begin
// 比對符合,即代表此下拉框為所要操作的下拉框

for i:=0 to HtmlSelEle.length-1 do
begin
Application.ProcessMessages;

// 再來比對下拉框內的 Option 的值
spDisp := HtmlSelEle.item(i,0);
if SUCCEEDED(spDisp.QueryInterface(IHTMLOptionElement ,iOpt))then
begin
s3:=iOpt.value;


if AnsiSameStr((value),(s3)) then
begin
// 如果是所要的值,便選擇它。
iOpt.selected:=true;

HtmlSelEle.selectedIndex:=iOpt.index;

// 脫離
break;
end;
end;
end;
end; // if
end; // if





// -----------------------------------------------------

至於如何點選提交按鈕,這個要用判斷的,沒有常規。
一般通用是 <input type="submit"....>
也就是判斷此按鈕(iBtn)的型式(_type) 為 submit ,且其 Form 為你要
的就可以啦,此動作也等於 iBtn.form.submit;
不過有的按鈕有特殊動作,所以要看一下網頁源碼才準。




 
你是如何提交表单的?
 
还有我怎么没办法下载你的作品能发个mail给我吗?
shd99@public.zzptt.fj.cn
 
对于asp网页,怎么没办法占计提交?
当form没有name时,有action,
当action=aa.asp时,只是刷新了网页,而不是提交网页内容。
 
jiichen,我有一个如何捕获网页元素(如网页上的按钮)的事件(如OnClick)的问题,
关注一下吧,LID:593978
 
多人接受答案了。
 
后退
顶部