要想使用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問候語呢?很簡單,代碼如下:
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語句強制顯式聲明所有變量。聲明示例如下:
3 |
Public UserName, Password |
注意:在VBScript中,變量名是不區分大小寫,即userName與UserName是指同一個變量。
4.2. 命名規則
VBScript中變量命名是有其規則標準的,變量命名必須遵循:
- 第一個字符必須是字母。
- 不能包含嵌入的句點。
- 長度不能超過255個字符。
- 在被聲明的作用域內必須唯一。
4.3. 作用域與存活期
變量的作用域由聲明它的位置所決定。如果在過程中聲明的,則只有該過程可以使用,即過程級變量;如果在過程之外聲明的,則該變量可以被腳本中所有過程所使用,即Script級變量。
變量所存在的時間爲存活期。Script級變量的存活期爲從被聲明開始,直到腳本運行結束爲止;過程級變量的存活期僅是過程被調用執行開始到結束的時間。不同的過程可以使用相同的變量名,因爲局部變量只有聲明它的過程才能識別。
4.4. 變量賦值
給變量賦值很簡單,使用等號進行賦值,等號左邊爲變量名,右邊爲變量值。若該變量是對象引用級別的,則需使用Set語句。示例代碼如下:
3 |
Set conn = CreateObject( "ADODB.Connection" ) |
4.5. 標量與數組
只包含一個值的變量成爲標量變量;有時候爲了方便將一組相關值賦給一個變量,則成爲數組變量。區別標量與數組的唯一方式是聲明時數組變量名後面帶有括號()。變量聲明就不說了,前面已經提到,這裏我們看看怎樣聲明一維數組及多維數組(最大60維——:)只要您能夠理解)。
我們也可以聲明動態數組(在運行腳本時大小發生變化的數組),使用Dim或ReDim語句,但括號中不包含任何數字。要使用動態數組,必須隨後使用ReDim確定維數和每一維的大小。若同時使用Preserve關鍵字,則在重新調整大小時保留數組的內容。
5. 常數
常數在VBScript中是表示不變的值,用於代替數字或字符串。其內部定義了許多常數,都是以vb開頭,例如在Hello World程序中涉及到的MsgBox常數“vbOKOnly”。除了MsgBox常數外,還有顏色常數、比較常數、日期和時間常數等等,詳見參考文檔。
內部自帶常數,我們可以直接使用。當自帶常數不能滿足我們的需求時,我們也可以自定義常數,在VBScript中是使用Const語句來定義常數,該語句的簽名如下:
1 |
[ Public
| Private ]
Const constname = expression |
主要參數:
- constname:爲常數名稱,爲了區分常數與變量,最好有一套自己的命名規則,這裏推薦字母全大寫,單詞間用下劃線分割;
- expression:文字或其他常數,或包括除 Is 外的所有算術運算符和邏輯運算符的任意組合。
常數默認是Public級別,您也可以指定爲Private級別,在同一行中聲明多個常數需要用逗號分割,常數聲明中不能使用變量、自定義函數及內部函數。下面是常數的一些示例代碼:
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 運算符是對象引用比較運算符。它並不比較對象或對象的值,而只是進行檢查,判斷兩個對象引用是否引用同一個對象。