在這篇教程中我們將學習如何在imacros中使用變數。
在iMacros中有兩種類型的變數:內建變數和使用者定義的變數。
內建變數:
內建變數是用來界定某些效能的宏觀的行為,例如宏逾時值:
SET !TIMEOUT 33
執行上面一句意味著設定頁面逾時時間為33s
有三個特殊的內建變數, !VAR1 , !VAR2和!VAR3。這些變數可以設定為任何你自訂的值。
例如:
SET !VAR1 helloworld
設定!VAR1為 helloworld (ps: <sp>代表空格<br>代表斷行符號)
PROMPT Pleaseentertext !VAR1
彈出一個輸入框,你在輸入框中輸入的內容將傳到!VAR1中。
使用者定義的變數:
自訂變數是使用者在外部控制時傳入的變數。例如在Visual Basic指令碼樣本這將如下所示:
iret = imacros.iimSet("-var_ITEM", "15")(ps:有時候也可以這樣設定:iimSet("ITEM", "15"),設定變數ITEM)
在調用的地方使用{{ITEM}}替換要代替的數值。
iMacros讓您指定文字檔, CSV檔案作為輸入。
例如這樣一個csv檔案:
"ARTIST" , "ALBUM TITLE" , "PRICE"
"Beatles", "Abbey Road", "13.49"
"Beatles", "The Beatles 1,2,3" , "25.49"
"Mozart" , "Symphonies No.40 & 41", "9.98"
"Mozart", "Requiem", "7.50"
這個檔案的檔案名稱為OnlineAuction.csv
我們現在需要告訴iMacros宏如何找到這個資料輸入檔案。為此,我們使用內建的變數!DATASOURCE
SET !DATASOURCE OnlineAuction.csv
如果您不使用任何路徑資訊DataSource的路徑預設定位在標準資料來源的目錄,可在選項對話方塊中指定這個路徑。預設路徑是iMacros資料路徑下的datasources檔案夾。
選擇好資料來源檔案後我們需要告訴iMacrosCSV檔案有多少列。我們用!DATASOURCE_COLUMNS變數設定:
SET !DATASOURCE_COLUMNS 3
此數字必須完全符合輸入檔案的列數
既然我們要插入的所有資料集,我們需要的宏迴圈來控制。
SET !DATASOURCE_LINE {{!LOOP}} (ps:loop就是指令碼迴圈的次數,還記得play loop那個迴圈運行按鈕麼~~)
這個內建變數是用來設定讀取檔案的第幾行。
現在,我們已經把準備工作都做好了。接下來我們要讀取出對應的資料。
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Name CONTENT={{!COL1}}
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Album CONTENT={{!COL2}}
TAG TYPE=INPUT:TEXT FORM=Listing ATTR=NAME:Price CONTENT={{!COL3}}
{{!COL1}} 代表的是讀取出對應的第一列資料
資料庫
這個例子只適用於專業版。
iMacros可以直接從資料庫讀取資料。
這個例子中的代碼Visual Basic指令碼串連到Microsoft Access資料庫: (ps:這個功能我沒有嘗試使用過,誰實驗覺得好用了告訴我:))
' open database
set rs = CreateObject("ADODB.Connection")
rs.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" _
& mypath & "IIM-TEST-SUBMIT.MDB")
' use SQL to select information
sql = "select * from table1"
set rs = rs.Execute(sql)
' start iMacros
set iim1= CreateObject ("iMacros")
iret = iim1.iimInit
iret = iim1.iimDisplay("Submitting Data from MS ACCESS")
' loop through result dataset
do until rs.eof
'Set the variable
iret = iim1.iimSet("-var_FNAME", rs.fields(0))
iret = iim1.iimSet("-var_LNAME", rs.fields(1))
iret = iim1.iimSet("-var_ADDRESS", rs.fields(2))
iret = iim1.iimSet("-var_CITY", rs.fields(3))
iret = iim1.iimSet("-var_ZIP", rs.fields(4))
iret = iim1.iimSet("-var_STATE-ID", rs.fields(5))
iret = iim1.iimSet("-var_COUNTRY-ID", rs.fields(6))
iret = iim1.iimSet("-var_EMAIL", rs.fields(7))
'Run the macro
'Note: This is the SAME macro, as in the FILE-2-WEB-METHOD2.VBS example script!!!
iret = iim1.iimPlay("wsh-submit-2-web")
If iret < 0 Then
MsgBox iim1.iimGetLastError()
End If
rs.movenext
loop
iret = iim1.iimDisplay("Done!")
iret = iim1.iimExit
WScript.Quit(0)