首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 運用 MSHTML 自動化填寫與提交網頁表單

     編輯:Delphi

MSHTML 物件模型速覽

IHTMLDocument2 為文件根節點,all 集合包含所有標籤元素。常用屬性/方法:

  • all.item('name', index):依 name 與索引取得元素。
  • IHTMLInputElement.value:讀寫輸入框值。
  • IHTMLElement.click / IHTMLFormElement.submit:觸發提交。

情境一:提交按鈕有 name 屬性

procedure TForm1.Button1Click(Sender: TObject);
var
  Doc: IHTMLDocument2;
  UserEl, PassEl: IHTMLInputElement;
  Btn: OleVariant;
begin
  Doc := WebBrowser1.Document as IHTMLDocument2;

  UserEl := Doc.all.item('user', 0) as IHTMLInputElement;
  UserEl.value := Edit1.Text;

  PassEl := Doc.all.item('password', 0) as IHTMLInputElement;
  PassEl.value := Edit2.Text;

  Btn := Doc.all.item('submit', 0);
  Btn.click;                                   // 模擬點擊提交按鈕
end;

情境二:提交按鈕無 name,改用表單 submit()

procedure TForm1.Button1Click(Sender: TObject);
var
  Doc: IHTMLDocument2;
  UserEl, PassEl: IHTMLInputElement;
  Frm: IHTMLFormElement;
begin
  Doc := WebBrowser1.Document as IHTMLDocument2;

  UserEl := Doc.all.item('user', 0) as IHTMLInputElement;
  UserEl.value := Edit1.Text;

  PassEl := Doc.all.item('password', 0) as IHTMLInputElement;
  PassEl.value := Edit2.Text;

  Frm := Doc.all.item('login_form', 0) as IHTMLFormElement;
  Frm.submit;                                  // 直接提交表單
end;

關鍵點提示

  1. 需在專案 uses 中引入 MSHTML 單元(安裝 Microsoft HTML Object Library)。
  2. WebBrowser1 必須已完成導航(DocumentComplete 事件後)才能存取 Document。
  3. 若頁面使用框架,需先取得對應 Frame 的 Document。
  4. 動態生成的元素可能需輪詢等待 ReadyState = READYSTATE_COMPLETE。

進階應用

  • 結合 IHTMLElement.innerText/innerHTML 擷取頁面資料。
  • 處理 JavaScript 事件:element.onclick := ... 或執行 execScript。
  • 應對反自動化:隨機延遲、模擬真實滑鼠軌跡、旋轉 User-Agent/Proxy。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved