一、前言
其實對於AU3 我只是個新手,程式設計我也不會,IE操作是剛好最近工作上有需要才學的,由於學習的過程 跌跌撞撞所以想到,如果可以把自己學習到的心得
分享出來,讓其他新手也知道一些過程跟方法,我想多多少少也可以幫助到別人,這篇文章與其說是教學,不如說是我的一些小小的心得,希望可以給新手解決問題
的方向。這邊必須要先感謝 suiyefeng 兄的幫助.....花了很多時間幫助我 學到不少東西 解決了我的問題......是個好人 必須要給個讚喔!!
P.S 文章中如果有引用到某些朋友發表的語法....請多見諒 教學用而已...至於大名可能會遺漏 多多見諒
二、IE自動登入某個網站 自動輸入帳號密碼
我想 這點是很多新手其實都很想知道的....但是 資料找尋不易....願意回答的朋友也不多....當初我也是為了這點找了半天 找不到方法.....雖然找的到 範例 但是放在
自己想要登入的網站 卻老是出錯,所以.....搞了半天 還是找不出方法,後來在網上看到某個朋友的語法才了解到有個方式 可以解決我的問題.....
至於我所謂自己的網站特殊 .....請看下面的文章 http://www.autoitx.com/thread-28668-1-1.html
心得:
其實大部分的人應該都看的懂 HTML 的基本語法....但是新手找不到控件 或者 覺得應該是哪個了 但是 實際上卻無法運作....譬如說 網上有個語法的例子是..真会走路的废柴 兄的語法
#include <IE.au3>
$oIE = _IECreate("http://mail.google.com")
$oForm = _IEGetObjById($oIE,"gaia_loginform")
$Login = _IEFormElementGetObjByName($oForm,"Email")
$Pass = _IEFormElementGetObjByName($oForm,"Passwd")
_IEFormElementSetValue($Login,"用户名")
_IEFormElementSetValue($Pass,"密码")
_IEFormSubmit($oForm)
這個我看了 也是覺得看的懂作法呀.......可是在我想要登入的網站 弄個半天 卻無法 原因是 我的網站的表單沒有名稱 沒有ID 所以 怎麼弄都不行......請參考 上面的網址的發問
後來又看到了 huangke 兄的語法.......
#include <IE.au3>
$oIE = _IECreate("http://mail.163.com/",0,1,1,1 )
_IELoadWait ($oIE)
$oInputs = _IETagNameGetCollection ($oIE, "INPUT")
For $oInput In $oInputs
if $oInput.name = "username" then
$oInput.value="您的用户名"
EndIf
Next
For $oInput In $oInputs
if $oInput.name = "password" then
$oInput.value="您的密码"
EndIf
Next
For $oInput In $oInputs
if $oInput.name = "登录邮箱" then
_IEAction ($oInput, "click")
EndIf
Next
Exit
突然發現到......原來控件 並不一定要從HTML 的 語法裡面去找.....尤其如果自己不熟悉的話......可以用搜尋的 然後用值 去判斷.....就可以找到自己想要的控件的方法....
因為 控件 前面都會有個INPUT 所以用 $oInputs = _IETagNameGetCollection ($oIE, "INPUT") 這個去搜尋所有的INPUT 然後再去判斷 所的到的訊息.....可以找出
同理.....如果有個文字區塊 不知道如何判斷 同理就可以用 _IETagNameGetCollection ($oIE, "textarea") 去抓取 然後再看看各個屬性的值 是多少 可以找到自己想要的控件
#include <IE.au3>
$oIE = _IECreate("https://www.xxxx.tw:8443/cas-web/login?service",0,1,1,1 )
_IELoadWait ($oIE)
$oInputs = _IETagNameGetCollection ($oIE, "INPUT")
;找到 名子控件 輸入名子
For $oInput In $oInputs
if $oInput.name = "username" then
$oInput.value="AAAA"
EndIf
Next
;找到密碼控件 輸入密碼
For $oInput In $oInputs
if $oInput.name = "password" then
$oInput.value="9999"
EndIf
Next
;找到登入的按鈕 按下登入
For $oInput In $oInputs
; MsgBox(0,"A",$oInput.value)
if $oInput.type = "submit" then
_IEAction ($oInput, "click")
EndIf
Next
Sleep(10000)
;跳轉到 想要去的地方
_IENavigate ($oIE, "http://www.xxxx.tw:8081/web/41215/1")
;找到文字區塊 然後輸入想要輸入的值
$oIETXTs = _IETagNameGetCollection ($oIE, "textarea")
For $oIETXT In $oIETXTs
if $oIETXT.ID = "MAINTXT" then
$oIETXT.value="AAAAAAAA"
EndIf
Next
;找到儲存的位置 按下儲存的按鈕
$oInputs = _IETagNameGetCollection ($oIE, "INPUT")
For $oInput In $oInputs
; MsgBox(0,"A",$oInput.value)
if $oInput.value = "儲存" then
_IEAction ($oInput, "click")
EndIf
Next
Sleep(10000)
;轉到登出的那個網址
_IENavigate ($oIE, "http://www.xxxx.tw:8081//c/portal/logout")
Sleep(5000)
_IEQuit ($oIE)
上面的是我的語法....從中可以看出.....找到控件以後 其實有很多屬性的資料跟值可以判斷.....語法都很像....可以每個控件的判斷方法 都不一樣.......
所以.....理論上 上面的語法 等等的 先不談效率....先求有...在求好....至少 可以幫助新手解決一些困擾....
下次 我們再來談談......如何POST 或者 GET 吧 |