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

要想使用QTP進行自動化測試,必須瞭解VBScript這門語言,對於使用過ASP或VB開發的人來說,VBScript已經再熟悉不過了,但是沒有接觸過VBScript的同學也不要灰心,因爲這門語言簡單易學。

1. VBScript利器
2. Hello World
3. 數據類型
4. 變量
5. 常數
6. 運算符

1. VBScript利器

子曰:工欲善其事,必先利其器。學習一門語言自然是離不開工具及文檔,有好的工具及文檔在手,學習起來也會得心應手。在此,我推薦大家一個很不錯的編輯工具——VbsEdit,該工具既能編輯代碼,又可調試代碼,有不錯的智能提示,還有很多示例代碼。可惜不是免費使用,不過網上已經有綠色版,您可以搜索下載。若你已經安裝了QTP,那麼使用QTP工具也是一個不錯的選擇。參考文檔可以使用在線版《Microsoft Windows腳本技術》,也可以從網上搜索下載CHM文件。

2. Hello World

每種語言的入門都是一樣,從簡單的Hello World開始,我們也不例外。如何使用VBScript來彈出一個對話框顯示Hello World問候語呢?很簡單,代碼如下:

1 MsgBox("Hello world!")
2 MsgBox "Hello world!"
3 result = MsgBox("Hello World!", vbOKOnly, "Greeting")
4 MsgBox "Hello World!", vbOKOnly, "Greeting"

既然在此出現的第一個函數是MsgBox,那麼就簡單介紹一下該函數,其簽名如下:

1 MsgBox(prompt[, buttons][, title][, helpfile, context])

主要參數:

  • prompt:爲要顯示的消息,其他帶[]參數爲可選參數;
  • buttons:爲顯示對話框按鈕及類型,默認值爲0,即只顯示“確定”按鈕;
  • title:爲對話框標題欄文字。

MsgBox函數也有返回值,當你點擊確定或取消按鈕時,其返回的值是不一樣的。其他詳細內容,大家可以去查閱參考文檔,這裏就不逐一說明。

3. 數據類型

VBScript只有一種數據類型——Variant,它是根據上下文來判斷是數字還是字符串。因爲Variant是VBScript中唯一的數據類型,所以它也是VBScript中所有函數的返回值的數據類型。爲了進一步區分數據類型,它包含如下數據子類型:

子類型 描述
Empty 未初始化的Variant。對於數值變量,值爲0;對於字符串變量,值爲零長度字符串 ("")。
Null 不包含任何有效數據的Variant
Boolean 包含True或False。
Byte 包含0到255之間的整數。
Integer 包含-32,768到32,767之間的整數。
Currency -922,337,203,685,477.5808到922,337,203,685,477.5807。
Long 包含-2,147,483,648到2,147,483,647之間的整數。
Single 包含單精度浮點數,負數範圍從-3.402823E38到-1.401298E-45,正數範圍從1.401298E-45到3.402823E38。
Double 包含雙精度浮點數,負數範圍從-1.79769313486232E308到-4.94065645841247E-324,正數範圍從4.94065645841247E-324到1.79769313486232E308。
Date (Time) 包含表示日期的數字,日期範圍從公元100年1月1日到公元9999年12月31日。
String 包含變長字符串,最大長度可爲20億個字符。
Object 包含對象。
Error 包含錯誤號。

您可以使用轉換函數(CInt,CStr等等)來轉換數據的子類型。另外,可使用VarType函數返回數據的Variant子類型。

4. 變量

4.1. 變量聲明

變量聲明有兩種方式——顯式與隱式,顯式使用Dim、Public、Private語句進行聲明,隱式直接使用變量名。使用隱式聲明方式的習慣不好,因爲這樣有時會由於變量名拼錯而導致程序運行出現意外,因此,最好在每個腳本開始第一行使用Option Explicit語句強制顯式聲明所有變量。聲明示例如下:

1 Option Explicit
2 Dim i, conn   '聲明多個變量時用逗號隔開
3 Public UserName, Password
4 Private m_id

注意:在VBScript中,變量名是不區分大小寫,即userName與UserName是指同一個變量。

4.2. 命名規則

VBScript中變量命名是有其規則標準的,變量命名必須遵循:

  • 第一個字符必須是字母。
  • 不能包含嵌入的句點。
  • 長度不能超過255個字符。
  • 在被聲明的作用域內必須唯一。

4.3. 作用域與存活期

變量的作用域由聲明它的位置所決定。如果在過程中聲明的,則只有該過程可以使用,即過程級變量;如果在過程之外聲明的,則該變量可以被腳本中所有過程所使用,即Script級變量。

變量所存在的時間爲存活期。Script級變量的存活期爲從被聲明開始,直到腳本運行結束爲止;過程級變量的存活期僅是過程被調用執行開始到結束的時間。不同的過程可以使用相同的變量名,因爲局部變量只有聲明它的過程才能識別。

4.4. 變量賦值

給變量賦值很簡單,使用等號進行賦值,等號左邊爲變量名,右邊爲變量值。若該變量是對象引用級別的,則需使用Set語句。示例代碼如下:

1 Dim i, conn, ui
2 i = 0
3 Set conn = CreateObject("ADODB.Connection")
4 Set ui = New UserInfo

4.5. 標量與數組

只包含一個值的變量成爲標量變量;有時候爲了方便將一組相關值賦給一個變量,則成爲數組變量。區別標量與數組的唯一方式是聲明時數組變量名後面帶有括號()。變量聲明就不說了,前面已經提到,這裏我們看看怎樣聲明一維數組及多維數組(最大60維——:)只要您能夠理解)。

1 Dim a(9), table(2, 3)
2 a(0) = 1
3 ...
4 a(9) = 11
5 MsgBox(a(1))   '輸出數組變量值
6  
7 table(0, 0) = 1
8 ...
9 table(2, 3) = 10

我們也可以聲明動態數組(在運行腳本時大小發生變化的數組),使用Dim或ReDim語句,但括號中不包含任何數字。要使用動態數組,必須隨後使用ReDim確定維數和每一維的大小。若同時使用Preserve關鍵字,則在重新調整大小時保留數組的內容。

1 Dim count, a()
2 count = 9
3 ReDim a(count)
4 ReDim Preserve a(10)

5. 常數

常數在VBScript中是表示不變的值,用於代替數字或字符串。其內部定義了許多常數,都是以vb開頭,例如在Hello World程序中涉及到的MsgBox常數“vbOKOnly”。除了MsgBox常數外,還有顏色常數、比較常數、日期和時間常數等等,詳見參考文檔。

內部自帶常數,我們可以直接使用。當自帶常數不能滿足我們的需求時,我們也可以自定義常數,在VBScript中是使用Const語句來定義常數,該語句的簽名如下:

1 [Public | Private] Const constname = expression

主要參數:

  • constname:爲常數名稱,爲了區分常數與變量,最好有一套自己的命名規則,這裏推薦字母全大寫,單詞間用下劃線分割;
  • expression:文字或其他常數,或包括除 Is 外的所有算術運算符和邏輯運算符的任意組合。

常數默認是Public級別,您也可以指定爲Private級別,在同一行中聲明多個常數需要用逗號分割,常數聲明中不能使用變量、自定義函數及內部函數。下面是常數的一些示例代碼:

1 Const PI = 3.14   '常數默認爲公有。
2 Private Const STEP_APPLY = "Apply"   '定義私有常數。
3 Const STEP_APPLY = "Apply", PI  = 3.14   '在一行上定義多個常數。

6. 運算符

VBScript有一套完整的運算符,包括算術運算符、比較運算符、連接運算符和邏輯運算符。當表達式中含有多個運算符時,它們的運算優先級是:算術運算符 > 比較運算符 > 邏輯運算符。所有比較運算符的優先級相同,算術運算符和邏輯運算符的優先級如下所示:

6.1. 算術運算符

描述 符號
求冪 ^
負號 -
*
/
整除 \
求餘 Mod
+
-
字符串連接 &

字符串連接 (&) 運算符不是算術運算符,但是在優先級順序中,它排在所有算術運算符之後和所有比較運算符之前。

6.2. 邏輯運算符

描述 符號
邏輯非 Not
邏輯與 And
邏輯或 Or
邏輯異或 Xor
邏輯等價 Eqv
邏輯隱含 Imp

6.3. 比較運算符

描述 符號
等於 =
不等於 <>
小於 <
大於 >
小於等於 <=
大於等於 >=
對象引用比較 Is

Is 運算符是對象引用比較運算符。它並不比較對象或對象的值,而只是進行檢查,判斷兩個對象引用是否引用同一個對象。


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