Online Multi-Matchmaking community where you get paid to build relationships.
Reach your customers at any time & place Market on a one-to-one basis.
Free php, mysql & perl web hosting. 29 Free PHP scripts with 1-click installations.
第一篇屬基礎必修課 ! 這與我們將來能否輕鬆寫出一個GDL 有極大的關係,請務必看懂喔~
要寫出一個GDL,無非就是要懂得如何代指令與如何去安排整個流程~
所以此篇教學的重點有兩個方向:
1.網頁的基本架構介紹: 目的在教大家對網頁的形成有基本的了解,將來才有辦法去照著其架構來寫出對應的指令~
2.GDL的流程安排: 指令人人會代,但GDL 跑不跑的順就會差粉多!! 唯有完善的安排才能免去不必要的錯誤~
![]()
基本上一份HTML文件會由三個部份所構成~
1.描述HTML版本的資訊(可省略不寫 )
2.以<HEAD></HEAD> 來宣告整個HTML文件的前言
3.HTML文件的本文,可由BODY元素或FRAMESET元素來組成
上面是整個架構,而我們的需求是位於 <BODY></BODY> 間的內文~ ( FRAMESET 的說明請參考附錄一的最後一小節"框架" )
在BODY內可放粉多東西,但我們只要一個就好了,即<FORM></FORM>內的東西~
![]() |
而表單(FORM)裏共可宣告七個控制項,其中 INPUT、SELECT、TEXTAREA 這三個才是重點,其它的幾乎用不到,別鳥它~
接著在INPUT 控制項內,又可宣告十種屬性,這十個我們幾乎都會用到,粉重要喔~
下面的網頁裏,我把各種屬性都標了出來,希望大家可以熟悉它的構成模樣。以後一看到網頁就可以馬上判斷它是屬於哪種物件~
好! 知道架構後,就可以開始來找相對應的指令了~
比如我想要在 Text物件 那格填上 "我愛小美",那我應該用哪個指令呢? 【03-網頁控制類】
指令的說明粉白話,一看就知道只要能找到 Text物件 這格的欄位名稱就一切搞定了~!
所以我們就來翻下一下原始檔,發現如下~
所以TextTest1 就是我們要的欄位名,即 SetFieldValue:TextTest1=我愛小美 ,就可以填上囉~
至於其它的地方,也都以此類推即可~
而NT 為了使USER 更容易去取得欄位資訊,所以 提供了一個DEBUG的功能! 專門用來對網頁內容作分析的。
且特別針對INPUT 控制項的各種屬性,加了一個自動生成指令的功能~
使用方式粉容易,下圖是YG的申請頁面,我們可以看到,這裏只用到 INPUT 與 SELECT ,而 INPUT佔了大多數,有 TEXT、CHECKBOX、SUBMIT、BUTTON 四種~

大概了解網頁的構成方式後,那我們就可以來教大家如何利用DEBUG功能來快速取得所有控制項的欄位訊息~
首先,切換到【瀏覽器】,KEY入申請頁連結後,再來就是把那些空格都照你看的懂的意思填上值~
接著切換至【DEBUG】,工作區選 瀏覽區,顯示類別選 INPUT ,再按自動產生填入欄位命令

這樣子,所有的欄位資訊是不是一目了然了呢~ 帥吧,老皮!
當然,我們也可以選擇其它的控制項,比如 SELECT ~
切換至【DEBUG】,工作區選 瀏覽區,顯示類別選 SELECT !
再來就是把它們全反白後,按右鍵,選 Copy Selected ByName,就可以得到這四個欄位的名字了~
![]()
前面看的粉想死的人可以放鬆一下了,因為這個部份是在講 邏輯 ,所以不會像前面講網頁結構一樣死板板的~
何謂流程呢? 就是指令執行的順序~ 就像我們手動時一樣,也會有個順序~
當我們手動時,眼睛是盯著視窗的,有任何狀況,都可以馬上處理~
但當我們寫成GDL時,是改由PC 來幫忙處理,所以我們除了要考量到各式各樣的狀況外,更要正確的安排整個執行的過程~
![]()
例: 無限鄉民的寒冬送暖活動

整個順序是從1~9,但其中3、6、8 的地方,各加了一個 邏輯判斷 ,箭頭的方向就是轉移程序的走向~
程序3:當沒人或沒愛心品時,直接跳到程序9,結束~
程序6:當上傳失敗時,則跳回程序5,再次上傳~
程序8:完成上傳,再跳回程序1,從頭開始~
我們把上面的例子再應用,變成每位無限鄉民要負責多樣愛心品~ 意即 一帳號上傳N個檔案 的例子~

整個順序是從1~12,但其中3、5、8、10、11 的地方,各加了一個 邏輯判斷 ,箭頭的方向就是轉移程序的走向~
程序3:當沒人時,直接跳到程序12,結束~
程序5:當沒人時,直接跳到程序12,結束~
程序8:當上傳失敗時,則跳回程序7,再次上傳~
程序10:判斷個人負責的愛心品是否已全部上傳完了,若還有則跳品程序4~
程序11:個人負責的愛心品已全部上傳完了,再跳回程序1,換下一個鄉民~
若我把上面的例子(無限鄉民寒冬送暖活動partII)來套對應的NT指令,就會變成下面的~~
![]()
對流程安排有了體認後,接著要考慮的就是程序執行的穩定度~
何謂穩定度呢?? 即每個執行的步驟是否都能精準的完成
倘若我們在某些步驟上出了差錯,那就算整個程序的安排是妥善的,也會因為連帶效應而導致錯誤~
倘若在程序6時, 程式並未等到檔案上傳完畢時才下判斷,那結果就會產生誤判,而將程序再轉至程序5~
或
倘若在程序4時,程式未等到災區頁面已完全開啟就下判斷,那就會產生誤判而反覆執行程序4~
![]()
為此,NT在設計指令時,只能以大部份適用作為前提! 剩下不足的地方只有靠USER來自行調整~
比如 XX相本的上傳,在按下上傳鈕後,會先跳出一個進度圖,再跑表單送出~
對手動而言,沒有任何問題。但對下指令而言,那個跳出的進度圖,就會是個致命的關鍵~
以WINXP 的系統而言,當進度圖跳出後,NT的 ClickButton: 指令就會判斷完成動作了!! ( 但又不是每次都會判定完成
)
所以接著程序就會往下一行走,若下面接的是判斷上傳是否成功的偵錯,那結果就是反覆執行這個迴圈~ (同樣的寫法對WIN2K 來說,就沒有誤判的問題!!)
再來,當程序一直不斷反覆執行時,假設每個程序接替時間是粉快速的,到了程式無法負荷時,就會發生失控的情形,即有些人會遇到的 "程序爆衝" !!
程序爆衝後,幸運的話,就是停在那裏動也不動 ! 但粉多時候是程式會整個不見~ ![]()
關於這點,程式可以更改的已於1.5版中修正過,即把每個程序接替時間加入0.5秒 的緩衝,可避免程式整個跳掉的情形~
剩下的部份就要USER從既有的指令來補足之~
例如,同樣的是XX相本的上傳~
|
原始設計 |
改良方式一 |
改良方式二 |
|
Label:RE-up go:上傳頁 FindWebText:上傳相片到 IfNo:RE-up SetFieldValue:MAX_FILE_SIZE=60000000 SetFileValue:userfile[]=***File*** SetFieldValue:title[]=***FileName*** RandomizeText:***Variable5***,anxanxanx SetFieldValue:tag=***Variable5*** Select:thumbtype,2 ClickButton:開始上傳 FindWebText:資料處理中 IfNo:RE-up |
Label:RE-up go:上傳頁 FindWebText:上傳相片到 IfNo:RE-up SetFieldValue:MAX_FILE_SIZE=60000000 SetFileValue:userfile[]=***File*** SetFieldValue:title[]=***FileName*** RandomizeText:***Variable5***,anxanxanx SetFieldValue:tag=***Variable5*** Select:thumbtype,2 RunScript:document.form1.submit(); FindWebText:資料處理中 IfNo:RE-up |
Label:RE-up go:上傳頁 FindWebText:上傳相片到 IfNo:RE-up SetFieldValue:MAX_FILE_SIZE=60000000 SetFileValue:userfile[]=***File*** SetFieldValue:title[]=***FileName*** RandomizeText:***Variable5***,anxanxanx SetFieldValue:tag=***Variable5*** Select:thumbtype,2 ClickButton:開始上傳 Label:wait WaitWebText:上傳進度條產生後會出現的字眼,3,wait FindWebText:資料處理中 IfNo:RE-up |
| 以上這種寫法,對xp的人來說,常會有上傳未完成就判定失敗而重覆上傳的情況發生~ | 送出方式由表單直接送出,沒有再去"按"上傳鈕,自然也不會觸動網頁上其它的元件。所以那個上傳的進度條不會秀出來。自然也不會有誤判的問題。 | 在按下上傳鈕後,再多加一個偵錯!! 以進度條產生時會出現的字眼來判斷。隨後才是檔案上傳是否完成的偵錯。如此一來也就不會有偷跑的情形~ |
關於精確控制程序穩定度常會用到的指令有下面幾個,一定要善加利用!!
FindWebText:文字串(可代變數)
尋找Web 頁面上的文字(含欄位值),其傳回內容可由 IFYes 或 IfNo 來加以判定
IFYes/IfNo:標記名稱
若傳回真/傳回假 則此條件成立,並前往標記處
FindHtmlText:欲尋找的字串(含html碼)
尋找Web 頁面原始檔裏的字串,其傳回內容可由 IFYes 或 IfNo 來加以判定
IFYes/IfNo:標記名稱
若傳回真/傳回假 則此條件成立,並前往標記處
Wait:部分連結(連結文字),秒數,標記 在秒數內沒看到該連結,就往標記處移
WaitWebText:網頁中某文字串,秒數,標記 在秒數內沒看到設定之字串,就往標記處移
WaitHtmlText:網頁中某原始碼字串,秒數,標記 在秒數內沒看到設定之字串,就往標記處移