kk_lee69 发表于 2011-11-15 00:15:34

IE操作新手专用入门教学 (一) (或者说是心得……HTML寻找控件的方法)

一、前言
    其實對於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 吧

骗子 发表于 2011-11-15 15:24:11

占地等待POST get

lpxx 发表于 2011-11-16 00:23:38

谢谢分享,支持一下

bdancerlc 发表于 2011-11-16 01:35:55

两篇都收藏了,有时间再仔细看看!..

newuser 发表于 2011-11-16 08:32:22

回复 1# kk_lee69
谢谢了!

suiyefeng 发表于 2011-11-16 10:59:37

楼主的共享精神要支持

hhsailor 发表于 2011-11-16 11:01:59

IE操作新手专用入门教学 (一) (或者说是心得……HTML寻找控件的方法)

学习一下了!!

ojoojo 发表于 2011-11-21 12:24:35

谢谢分享,支持一下

xms77 发表于 2011-11-21 22:48:02

系列学习教程,必须要顶,还要学!

fbi911 发表于 2011-11-23 23:45:05

學習學習留著註記以後備用

dennis_jmtw 发表于 2011-11-24 16:20:45

感謝教學多謝付出

cheng8457 发表于 2011-12-1 08:03:34

先收藏了 下班回家再研讀

blue_dvd 发表于 2011-12-12 17:57:28

谢谢分享,支持一下

cumtljj 发表于 2011-12-27 16:24:01

回复 1# kk_lee69


    正需要呢

hfwcy 发表于 2011-12-28 14:02:23

谢谢楼主的奉献
页: [1] 2 3 4 5
查看完整版本: IE操作新手专用入门教学 (一) (或者说是心得……HTML寻找控件的方法)