QTP自動化測試之VBScript基礎(下)

要想使用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]

或者使用塊形式

1 If condition Then
2     [statements]
3 [ElseIf condition-n Then
4     [elseifstatements]] . . .
5 [Else
6     [elsestatements]]
7 End If

主要參數:

  • condition:爲一個(多個)數值或字符串表達式,其運算結果爲True或False,若condition爲Null,則被視爲False。
  • statements:爲condition等於True時執行的一條或多條(以冒號分開)語句。

對於短小簡單的測試,可以使用單行形式(第一種語法),但塊形式(第二種語法)提供了比單行形式更強的結構化與適應性,比較容易閱讀、維護及調試。

01 '1. 條件爲True時
02 '單行形式
03 Dim myDate
04 myDate = #2011-9-8#   '日期時間字符串需用#括起來
05 If myDate < Now Then myDate = Now
06 '塊形式
07 If i = 100 Then
08     c = True
09     i = 0
10 End If
11  
12 '2. 條件爲True和False時
13 If user.UserName = "admin" Then
14     showAdminPage = True
15 Else
16     showAdminPage = False
17 End If
18  
19 '3. 對多個條件判斷
20 If value = 0 Then
21     MsgBox(0)
22 ElseIf value = 1 Then
23     MsgBox(9999)
24 Else
25     MsgBox("輸入不合法!")
26 End If

7.2. Select Case語句

語法結構如下:

1 Select Case testexpression
2     [Case expressionlist-n
3         [statements-n]] . . .
4     [Case Else expressionlist-n
5         [elsestatements-n]]
6 End Select

主要參數:

  • testexpression:任意數值或字符串表達式。
  • statements:當testexpression與expressionlist-n中的任意部分匹配時,執行的一條或多條語句。

Select Case結構提供了If...Then...ElseIf結構的另一個變通形式,功能與If...Then...ElseIf類似,但可以使代碼更加簡練易讀,它與Case語句關聯使用。

1 Dim value : value = 5   '多條語句在一行,需用冒號分開
2 Select Case value
3     Case 0:
4         MsgBox(0)
5     Case 1:
6         MsgBox(9999)
7     Case Else
8         MsgBox("輸入不合法!")
9 End Select

8. 循環語句

VBScript中可以使用以下循環語句:

  • Do...Loop語句
  • While...Wend語句
  • For...Next語句
  • For Each...Next語句

8.1. Do…Loop語句

當(或直到)條件爲True時循環,語法結構如下:

當條件爲True時重複執行某語句塊。

1 Do [{While | Until} condition]
2     [statements]
3     [Exit Do]
4     [statements]
5 Loop

當條件變爲True之前重複執行某語句塊。

1 Do
2     [statements]
3     [Exit Do]
4     [statements]
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)   '產生1到6之間的隨機數
03     response = MsgBox(myNum & "想要另一個數嗎?", vbYesNo)
04 Loop
05  
06 Dim check, counter
07 check = True : counter = 0
08 Do
09     Do While count < 20
10         counter = counter + 1  '增加計數器
11         If counter = 10 Then
12             check = false
13             Exit Do   '終止內循環
14         End If
15     Loop
16 Loop Until Not check

8.2. While…Wend語句

當條件爲True時循環,語法結構如下:

1 While condition
2     [statements]
3 Wend

主要參數:

  • 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]
2     [statements]
3     [Exit For]
4     [statements]
5 Next

主要參數:

  • counter:用做循環計數器的數值變量。這個變量不能是數組元素或用戶自定義類型的元素。
  • start:counter的初值。
  • end:counter的終值。
  • step:counter的步長。如果沒有指定,則step的默認值爲1。

8.4. For Each…Next語句

對於集合中的每項或數組中的每個元素,重複執行一組語句,語法結構如下:

1 For Each element In group
2     [statements]
3     [Exit For]
4     [statements]
5 Next [element]

主要參數:

  • element:用來枚舉集合或數組中所有元素的變量。對於集合,element可能是Variant變量、通用Object變量或任意指定的Automation對象變量。對於數組,element只能是Variant變量。
  • group:對象集合或數組的名稱。

9. 過程

在VBScript中,過程被分爲兩類:Sub過程和Function過程。

9.1 Sub過程

語法結構如下:

1 [Public [Default] | Private] Sub name [(arglist)]
2     [statements]
3     [Exit Sub]
4     [statements]
5 End Sub

主要參數:

  • 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)]
2     [statements]
3     [name = expression]
4     [Exit Function]
5     [statements]
6     [name = expression]
7 End Function

主要參數:

  • 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可以。

發佈了20 篇原創文章 · 獲贊 10 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章