使用WebBrowser元件控制網頁,在WinXP SP2 遇到怪問題 |
尚未結案
|
kakene
一般會員 發表:22 回覆:52 積分:19 註冊:2003-01-07 發送簡訊給我 |
一開始在此網頁輸入帳號,SUBMIT 之後跳到第二網頁
https://goodlock.gamania.com/GamaGoodLock.aspx
問題在第二網頁的元件,只有WinXP SP2 會抓不到
win2000完全可以運作 以下是我的程式
var a,Docs : oleVariant; BEGIN Docs :=Web_Browser.OleObject.Document.documentelement.document; a :=Docs.all.Item('tbAccount', 0); a.Value :=Edit1.Text; a :=Docs.all.Item('btSubmit', 0); a.click; a :=Docs.all.Item('ddlDelayTime', 0); a.Value :='100';//到這行就出錯了 .......請各位前輩指導~~ |
jeff377
初階會員 發表:9 回覆:60 積分:33 註冊:2004-08-10 發送簡訊給我 |
你發生的問題應該是HTML還沒被完全下載所導致,所以才會存取某個HTMLElement發生錯誤。
a :=Docs.all.Item('btSubmit', 0); a.click;上述Submit後會重新回Server端取得下一頁HTML,而你要判斷下一頁是否完全下載完成,才能接下執行下面程序 a :=Docs.all.Item('ddlDelayTime', 0); a.Value :='100';//到這行就出錯了發表人 - jeff377 於 2005/07/09 08:02:16 |
kakene
一般會員 發表:22 回覆:52 積分:19 註冊:2003-01-07 發送簡訊給我 |
不好意思,漏PO幾行程式,
我有等網頁完成才繼續執行程式
var a,Docs : oleVariant; BEGIN Docs :=Web_Browser.OleObject.Document.documentelement.document; a :=Docs.all.Item('tbAccount', 0); a.Value :=Edit1.Text; a :=Docs.all.Item('btSubmit', 0); a.click; //網頁開啟完成 gs_webstate ='OK'; while gs_webstate <> 'OK' do begin application.ProcessMessages; if gs_canclose ='Y' then exit; end; gs_webstate :=''; a :=Docs.all.Item('ddlDelayTime', 0); a.Value :='100';//到這行就出錯了 ....... //網頁開啟完成 gs_webstate ='OK'; procedure TMainForm.Web_BrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin gs_webstate := 'OK'; end; |
Clarinet
高階會員 發表:9 回覆:97 積分:126 註冊:2002-05-08 發送簡訊給我 |
引言: 不好意思,漏PO幾行程式, 我有等網頁完成才繼續執行程式a :=Docs.all.Item('ddlDelayTime', 0); a.Value :='100';//到這行就出錯了 這二行的第一行,使用的Docs是上一個網頁輸入帳號密碼的物件變數 Submit之後,已經變換成功一個網頁了。因此此處的Docs變數,當然是錯的,所以取出的a 是nil 所以,你應該要再重新指定一次Docs變數。 即在這二行之前加入一行 Docs :=Web_Browser.OleObject.Document.documentelement.document; GPS(全球衛星定位系統) http://www.allgps.comvar a,Docs : oleVariant; BEGIN Docs :=Web_Browser.OleObject.Document.documentelement.document; a :=Docs.all.Item('tbAccount', 0); a.Value :=Edit1.Text; a :=Docs.all.Item('btSubmit', 0); a.click; //網頁開啟完成 gs_webstate ='OK'; while gs_webstate <> 'OK' do begin application.ProcessMessages; if gs_canclose ='Y' then exit; end; gs_webstate :=''; a :=Docs.all.Item('ddlDelayTime', 0); a.Value :='100';//到這行就出錯了 ....... //網頁開啟完成 gs_webstate ='OK'; procedure TMainForm.Web_BrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin gs_webstate := 'OK'; end;
------
GPS(全球衛星定位系統) http://www.allgps.com |
kakene
一般會員 發表:22 回覆:52 積分:19 註冊:2003-01-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |