VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

oIE.Document.getElementByID("").Click() 有動作卻無法執行

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
Patrick Wu



註冊時間: 2007-01-03
文章: 228
來自: 台北市

第 1 樓

發表發表於: 星期四 十一月 15, 2012 11:13 am    文章主題: oIE.Document.getElementByID("").Click() 有動作卻無法執行 引言回覆

後學 寫了一個自動查詢 BR 航空公司的會員卡卡號
最後一行出了一些狀況 程式如下:

oIE = CREATEOBJECT("internetexplorer.application")
oIE.Visible=.T.
oIE.Width = SysMetric(1) &&&&& SYSMETRIC(1) Screen width 螢幕寬度 (2) Screen height. 螢幕高度
oIE.Height = SysMetric(2) - SysMetric(9) - (SysMetric(13) * 2) &&&&& (9) => Height of window title (13) Height of DOUBLE or PANEL window frame
oIE.NAVIGATE("https://eservice.evaair.com/Evaweb/EVA/FFP/membership-number-inquiry.aspx?lang=zh-tw")

DO WHILE oIE.BUSY OR oIE.READYSTATE <> 4
ENDDO

oIE.Document.getElementById("nation").VALUE = "TW"
oIE.Document.getElementById("ctl00$ContentPlaceHolder1$txt_ID").VALUE = "N122438466"
oIE.Document.getElementById("ctl00$ContentPlaceHolder1$txt_birthYY").VALUE = "1963"
oIE.Document.getElementById("ctl00$ContentPlaceHolder1$ddl_birthMM").VALUE = "8"
oIE.Document.getElementById("ctl00$ContentPlaceHolder1$ddl_birthDD").VALUE = "25"

oIE.Document.getElementByID("ctl00$ContentPlaceHolder1$btn_ok").Click() &&& == >> 有動作卻無法執行

煩請各先進 指導一下
BR 航空各網頁(申請會員) 用此法是 OK 的 謝謝各先進

function of_ok() 內有一行是 : __doPostBackLocal('ctl00$ContentPlaceHolder1$btn_ok','');

不知需如何處理 謝謝 指教


Patrick Wu 在 星期四 十一月 22, 2012 12:32 pm 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
elleryq



註冊時間: 2007-06-21
文章: 768


第 2 樓

發表發表於: 星期五 十一月 16, 2012 2:45 pm    文章主題: 引言回覆

可以參考這篇:http://stackoverflow.com/questions/10936454/ihtmldocument-click-an-ihtmlelement-by-id-not-name
他是說可以用 execScript() 來解決

可能的用法應該是 oIE.Document.execScript( "__doPostBackLocal('ctl00$ContentPlaceHolder1$btn_ok',''); ", "javascript" )

我不確定可不可以,給你參考看看。
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
Patrick Wu



註冊時間: 2007-01-03
文章: 228
來自: 台北市

第 3 樓

發表發表於: 星期六 十一月 17, 2012 12:43 pm    文章主題: 引言回覆

謝謝 Elleryq 先進指導 後學試試先
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
Patrick Wu



註冊時間: 2007-01-03
文章: 228
來自: 台北市

第 4 樓

發表發表於: 星期一 十二月 10, 2012 11:04 am    文章主題: 引言回覆

謝謝 Elleryq 先進指導
前些天下雨 沒去騎車 後學就此程式 重新 TRY 了一下
參入了 ("Wscript.Shell") 即可解決沒有動作的問題 方式如下
供各先進指教 OR 有更有效的方式 煩請各先進教授

THISFORM.VISIBLE = .F.
_SCREEN.WindowState = 1

oWS = CreateObject("Wscript.Shell")
oIE = CreateObject("internetexplorer.application")
oIE.TOP = 0
oIE.LEFT = 0
oIE.Visible=.T.
oWS.AppActivate(oIE) &&& 要在 oIE.Visible=.T. 之後 SET FOCUS() TO oIE => oWS.SendKeys("{ENTER}") 才會在此 oIE 上
oIE.Width = SysMetric(1) &&& SYSMETRIC(1) Screen width 螢幕寬度 (2) Screen height. 螢幕高度
oIE.Height = SysMetric(2) - SysMetric(9) - (SysMetric(13) * 2) &&& (9) => Height of window title (13) Height of DOUBLE or PANEL window frame
oIE.NAVIGATE("https://eservice.evaair.com/Evaweb/EVA/FFP/membership-number-inquiry.aspx?lang=zh-tw")

DO WHILE oIE.BUSY OR oIE.READYSTATE <> 4
ENDDO

oIE.Document.getElementById("nation").VALUE = "TW"
oIE.Document.getElementById("ctl00$ContentPlaceHolder1$hid_nation").VALUE = "TW"

DO CASE
CASE LEN(TRIM(PAX_CALL.PAX_IDE)) = 10
oIE.Document.getElementById("ctl00$ContentPlaceHolder1$txt_ID").VALUE = "身分證號碼"
oIE.Document.getElementById("ContentPlaceHolder1_rbl_Item_0").Click()
oIE.Document.getElementById("ContentPlaceHolder1_rbl_Item_0").Focus()
CASE LEN(TRIM(PAX_CALL.PAX_PPR)) = 09
oIE.Document.getElementById("ctl00$ContentPlaceHolder1$txt_Passport").VALUE = "護照號碼"
oIE.Document.getElementById("ContentPlaceHolder1_rbl_Item_1").Click()
oIE.Document.getElementById("ContentPlaceHolder1_rbl_Item_1").Focus()
ENDCASE

oIE.Document.getElementById("ctl00$ContentPlaceHolder1$txt_birthYY").VALUE = "YY"
oIE.Document.getElementById("ctl00$ContentPlaceHolder1$ddl_birthMM").VALUE = "MM"
oIE.Document.getElementById("ctl00$ContentPlaceHolder1$ddl_birthDD").VALUE = "DD"

************************************************************************************
oIE.Document.getElementById("ContentPlaceHolder1_rbl_Item_0").Focus()
oWS.SendKeys("{TAB}")
INKEY(01)
oWS.SendKeys("{ENTER}")
INKEY(01)
RELEASE oWS

DO WHILE oIE.BUSY OR oIE.READYSTATE <> 4
ENDDO
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作