要想使用QTP進行自動化測試,必須瞭解VBScript這門語言,對於使用過ASP或VB開發的人來說,VBScript已經再熟悉不過了,但是沒有接觸過VBScript的同學也不要灰心,因爲這門語言簡單易學。
7. 條件語句
8. 循環語句
9. 過程
7. 條件語句
VBScript中可以使用以下條件語句:
- If…Then…Else語句
- Select Case語句
7.1. If…Then…Else語句
If…Then…Else語句結構如下:
1 |
If condition
Then statements [ Else
elsestatements] |
或者使用塊形式
3 |
[ ElseIf
condition-n Then |
4 |
[elseifstatements]] . . . |
主要參數:
- condition:爲一個(多個)數值或字符串表達式,其運算結果爲True或False,若condition爲Null,則被視爲False。
- statements:爲condition等於True時執行的一條或多條(以冒號分開)語句。
對於短小簡單的測試,可以使用單行形式(第一種語法),但塊形式(第二種語法)提供了比單行形式更強的結構化與適應性,比較容易閱讀、維護及調試。
05 |
If myDate < Now
Then myDate = Now |
13 |
If user.UserName =
"admin" Then |
7.2. Select Case語句
語法結構如下:
1 |
Select Case
testexpression |
4 |
[ Case
Else expressionlist-n |
主要參數:
- testexpression:任意數值或字符串表達式。
- statements:當testexpression與expressionlist-n中的任意部分匹配時,執行的一條或多條語句。
Select Case結構提供了If...Then...ElseIf結構的另一個變通形式,功能與If...Then...ElseIf類似,但可以使代碼更加簡練易讀,它與Case語句關聯使用。
8. 循環語句
VBScript中可以使用以下循環語句:
- Do...Loop語句
- While...Wend語句
- For...Next語句
- For Each...Next語句
8.1. Do…Loop語句
當(或直到)條件爲True時循環,語法結構如下:
當條件爲True時重複執行某語句塊。
1 |
Do [{ While
| Until } condition] |
當條件變爲True之前重複執行某語句塊。
5 |
Loop [{ While
| Until } condition] |
主要參數:
- condition:數值或字符串表達式,其值爲True或False。如果condition爲Null,則condition被當作False。
- statements:當condition爲True時被重複執行的一條或多條命令。
Exit Do可以退出循環體,循環可以嵌套使用。
01 |
Do Until
response = vbNo |
02 |
myNum = Int(6 * Rnd + 1)
|
03 |
response = MsgBox(myNum &
"想要另一個數嗎?" , vbYesNo) |
07 |
check = True
: counter = 0 |
8.2. While…Wend語句
當條件爲True時循環,語法結構如下:
主要參數:
- condition:數值或字符串表達式,其值爲True或False。如果condition爲Null,則condition被當作False。
- statements:當condition爲True時被重複執行的一條或多條命令。
While…Wend沒有Exit語句,從頭一直循環到尾,若要在中途退出,則需用Do…Loop語句。
8.3. For…Next語句
指定循環次數,使用計數器重複運行語句,語法結構如下:
1 |
For counter = start
To end [ Step
step] |
主要參數:
- counter:用做循環計數器的數值變量。這個變量不能是數組元素或用戶自定義類型的元素。
- start:counter的初值。
- end:counter的終值。
- step:counter的步長。如果沒有指定,則step的默認值爲1。
8.4. For Each…Next語句
對於集合中的每項或數組中的每個元素,重複執行一組語句,語法結構如下:
1 |
For Each
element In
group |
主要參數:
- element:用來枚舉集合或數組中所有元素的變量。對於集合,element可能是Variant變量、通用Object變量或任意指定的Automation對象變量。對於數組,element只能是Variant變量。
- group:對象集合或數組的名稱。
9. 過程
在VBScript中,過程被分爲兩類:Sub過程和Function過程。
9.1 Sub過程
語法結構如下:
1 |
[ Public
[ Default ] |
Private ] Sub
name [(arglist)] |
主要參數:
- Public:表示Sub過程可被所有腳本中的所有其他過程訪問。
- Default:只與Class塊中的Public關鍵字連用,用來表示Sub過程是類的默認方法。如果在類中指定了不止一個Default過程,就會出錯。
- Private:表示Sub過程只可被聲明該過程的腳本中的其他過程訪問。
- name:Sub的名稱,遵循標準變量命名規則。
- arglist:代表在調用時要傳遞給Sub過程的參數的變量列表。用逗號隔開多個變量。其語法爲:[ByVal | ByRef] varname[()],ByVal表示該參數是按值傳遞的,ByRef表示該參數按引用傳遞,varname代表參數的變量名稱。
如沒有顯式地指定使用Public或Private,則Sub過程默認爲Public。調用Sub過程時,只需輸入過程名及所有參數值,參數值之間使用逗號分隔。不需使用Call語句,但如果使用了此語句,則必須將所有參數包含在括號之中。調用Sub過程的兩種方式。一種使用Call語句;另一種則不使用。兩種方式效果相同,如:Call MySub(a, b)或MySub a, b。
9.2 Function過程
語法結構如下:
1 |
[ Public
[ Default ]|
Private ] Function
name [(arglist)] |
主要參數:
- Public:表示Function過程可被所有腳本中的所有其他過程訪問。
- Default:只與Class塊中的Public關鍵字連用,用來表示Function過程是類的默認方法。如果在類中指定了不止一個Default過程,就會出錯。
- Private:表示Function過程只可被聲明該過程的腳本中的其他過程訪問。
- name:Function的名稱,遵循標準變量命名規則。
- arglist:代表在調用時要傳遞給Function過程的參數的變量列表。用逗號隔開多個變量。其語法爲:[ByVal | ByRef] varname[()],ByVal表示該參數是按值傳遞的,ByRef表示該參數按引用傳遞,varname代表參數的變量名稱。
如沒有顯式地指定使用Public或Private,則Function過程默認爲Public。調用Function過程時,函數名必須用在變量賦值語句的右端或表達式中,如:b = MyFunction(a)。要從函數返回一個值,只需將值賦給函數名。在過程的任意位置都可以出現任意個這樣的賦值。
9.3 Sub與Function的區別
- Sub沒有返回值,而Function有返回值。
- Sub不能放在表達式中,而Function可以。