線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:6109
推到 Plurk!
推到 Facebook!

用程式自動登入網頁,但網頁中找不到登入按鈕的name或id?

答題得分者是:washare
ucdesign2
一般會員


發表:24
回覆:33
積分:11
註冊:2002-10-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-08-29 14:02:47 IP:211.23.xxx.xxx 未訂閱
請教先進:網頁中找不到登入按鈕的name或id我該如何自動登入?
貼上網頁source及程式,請各位前輩指點,謝謝!我已查了論壇中的相關文章,
耗了2天,還是解決不了,只好請大家幫忙了

我要登入Logmein的網頁: --> https://secure.logmein.com/home.asp?lang=en
================================================================
<form name="login" method=post action="/logincheck.asp?action=checkpw">

Password

<input name="<font color="#ff0000">password" type="password" size="20" style="width: 160px; font-size: 12px">




=======================我的程式碼========================================





unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, SHDocVw;

type
TForm1 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
logon:Boolean;

implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate('https://secure.logmein.com/home.asp?lang=en');
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
docs,edits:OleVariant;
begin
if WebBrowser1.Document=nil then exit;
docs:= webbrowser1.document;
if not logon then
begin
edits:=docs.getelementbyid('email');
edits.value:='ucdesign@126.com';
edits:=docs.getelementbyid('password');
edits.value:='xxxxxxx';
// docs.forms.item(0,3).submit;
// WebBrowser1.OleObject.Document.GetElementByID('login').Click;
logon:=true;
end;
end;

end.

編輯記錄
ucdesign2 重新編輯於 2007-08-29 14:10:45, 註解 無‧
ucdesign2 重新編輯於 2007-08-29 14:13:12, 註解 無‧
ucdesign2 重新編輯於 2007-08-29 14:13:57, 註解 無‧
ucdesign2 重新編輯於 2007-08-29 14:16:42, 註解 無‧
ucdesign2 重新編輯於 2007-09-03 17:17:40, 註解 無‧
ucdesign2
一般會員


發表:24
回覆:33
積分:11
註冊:2002-10-23

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-14 12:11:31 IP:211.23.xxx.xxx 未訂閱
問題已解決!
但一直期待有人回應!看看是否有更好的方法!
可能大家都較忙吧!
那我就獻醜貼上解決方法(挺笨的方法)
如前輩有別的思考方向,請不吝指教
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
docs,edits:OleVariant;
begin
if WebBrowser1.Document=nil then exit;
docs:= webbrowser1.document;
if not logon then
begin
edits:=docs.getelementbyid('email');
edits.value:='ucdesign@126.com';
edits:=docs.getelementbyid('password');
edits.value:='********';
docs.forms.item(1,1).submit; // <-- 正解
//showmessage(docs.forms.item(1,1).name)='login';
// 用上一行笨方法試出來
logon:=true;
end;
end;
washare
初階會員


發表:14
回覆:36
積分:35
註冊:2006-10-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-09-30 19:18:33 IP:203.204.xxx.xxx 訂閱
我覺得每次跑去分析網頁source還蠻麻煩的 ,這種事做久了,我想出了一個比較快速的方法,就是直接寫一個網頁分析程序。
直接把常找的tag如form中的元素用for迴圈把所有值和名稱都列舉出來
如forms.item(0,0).name
forms.item(0,0).value
.
.
forms.item(n,n).name
forms.item(n,n).value


把值都輸到memo去看
全部的值和名稱都出來了,這樣一來馬上知道要怎麼抓值


解析的方法是用Webbrowser去開啟想要解析的網頁,執行網頁分析程序就行了,事半功倍,免煩腦


ucdesign2
一般會員


發表:24
回覆:33
積分:11
註冊:2002-10-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-10-17 16:48:15 IP:211.23.xxx.xxx 未訂閱
washare前輩反向思考的方法,很特別!

===================引 用 washare 文 章===================
我覺得每次跑去分析網頁source還蠻麻煩的 ,這種事做久了,我想出了一個比較快速的方法,就是直接寫一個網頁分析程序。
直接把常找的tag如form中的元素用for迴圈把所有值和名稱都列舉出來
如forms.item(0,0).name
forms.item(0,0).value
.
.
forms.item(n,n).name
forms.item(n,n).value


把值都輸到memo去看
全部的值和名稱都出來了,這樣一來馬上知道要怎麼抓值


解析的方法是用Webbrowser去開啟想要解析的網頁,執行網頁分析程序就行了,事半功倍,免煩腦


系統時間:2024-11-22 13:24:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!