有什麼方法可以替使用者按下"Submit"的按鈕? |
答題得分者是:Miles
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
|
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
引言: 我的程式利用外部呼叫的方法開啟了IE瀏覽器,連到了某個網頁,我有辦法可以替使用者按下網頁中的傳送紐嗎?我試過了利用Tab移動焦點的方法,可是因為使用Tab移動焦點會使的傳送的內容錯誤,有其他方法可以直接按下傳送鈕嗎?(我是希望可以不需用到webBrowser)不好意思ㄝ,題目寫的不太對...問題是這樣的...替使用者輸入資料... http://fbfh.trade.gov.tw/reg/Merchant/WB0104I.htm 但是如果使用的是WebBrowser就無法正確打開...使用IE卻可以... 我發現原因應該是在進去後的那頁廠商連結...使用JavaScript的關係... 如果用WebBrowser就無法正確取得位置...不知道該怎麼半ㄋ>"<.... |
Clarinet
高階會員 發表:9 回覆:97 積分:126 註冊:2002-05-08 發送簡訊給我 |
引言: 我的程式利用外部呼叫的方法開啟了IE瀏覽器,連到了某個網頁,我有辦法可以替使用者按下網頁中的傳送紐嗎?我試過了利用Tab移動焦點的方法,可是因為使用Tab移動焦點會使的傳送的內容錯誤,有其他方法可以直接按下傳送鈕嗎?(我是希望可以不需用到webBrowser)若您一定要透過IE的話,可用Windows 的ShellWindow方式或OleObject的方式,取得其Interface後,控制其Interface來達到您要的功能! GPS(全球衛星定位系統) http://www.allgps.com
------
GPS(全球衛星定位系統) http://www.allgps.com |
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
darnell 兄您好不好意思插個花:
我之前有做過相關的自動測試程式, 但我是用TWebBrowser去做的, 我將
相關的Code列出來看看, 請看紅字部分即可, 有些已經忘了當初怎麼寫出來的
< class="code">
宣告
private
{ Private declarations }
hd : IHtmlDocument2;
fm :IHtmlFormElement;
he :IHtmlElement;
ie :IHtmlInputElement;
ise:IHtmlSelectElement;
ovTable : OleVariant;
a : TWebBrowser;
BeginTime, FormBeginTime : TDateTime;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); var i, j : integer; begin Form2.RandomCreditNO; hd := WebBrowser1.Document as IHtmlDocument2; fm := hd.forms.item(0, 0) as IHtmlFormElement; //ShowMessage(fm.name); if fm = nil then begin Form2.Memo1.Lines.Strings[MemoCount-1] := Format('%-8s %-20s %-20s %-20s',[Form2.Memo1.Lines.Strings[MemoCount-1],'失敗 其他',' Form時間:' FormatDateTime('n:s:z',Now-FormBeginTime), Card1 Card2 Card3 Card4]); Form2.WriteFile(Form2.Memo1.Lines.Strings[MemoCount-1]); Inc(Form2.Fail); Form2.ShowResult; if Form2.CheckBox1.Checked then Close; exit; end; if fm.name = 'gobuy' then begin for i := 0 to hd.all.length - 1 do begin he := hd.all.item(i, 0) as IHtmlElement; if he.tagName = 'INPUT' then begin ie := hd.all.item(i, 0) as IHtmlInputElement; Memo1.Lines.Add(ie.name); if ie.name = 'ordernumber' then ie.value := inttostr(orderid); if ie.name = 'amount' then ie.value := '1'; if ie.name = 'storeid' then ie.value := storeid; end; end; Button2Click(nil); end; end; procedure TForm1.Button2Click(Sender: TObject); begin fm.submit; end;< >< > 我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
darnell
版主 發表:25 回覆:103 積分:145 註冊:2003-03-04 發送簡訊給我 |
謝謝Clarinet和Miles,這個問題我已經解決了,之前希望用IE是因為看起來好像只有在IE才有辦法處理,因為這個網頁用到了JavaScript隨機產生的一組序號,如果沒有相對應的序號即無法處理,因此才會發生使用內建的WebBrowser元件無法處理的情形,不過後來發現可以取得序號和做模擬傳送的方法解決了這個問題,本來想說使用移動滑鼠的方式來點選,不過因為相對位置不好掌握,也容易發生在網頁還未載入前即移動,因此最好的方式還是利用WebBrowser來解決... 謝謝大家~~~ ===發揮人的無限潛能===
==思想的極至就是虛無==
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |