您的位置:首页 > 编程语言 > Qt开发

QTP自动化测试之VBScript对象

2011-11-11 11:13 281 查看
VBScript作为脚本语言不仅能够编写简单的脚本,而且还能够创建及使用对象编写复杂的脚本,如Class对象,数据字典,操作文件夹及文件,错误处理,正则表达式等等。

1. Class对象

2. Dictionary对象

3. FileSystemObject对象

4. Err对象

5. RegExp对象

1. Class对象

使用Class语句可以创建一个对象,可以为它编写字段、属性及方法,它只有两个对象事件——InitializeTerminate。首先来看一个简单的Class示例:

01
Class
User
02
'私有字段,也可以使用Public语句定义公有字段
03
Private
m_UserName
04
Private
m_Profile
05
06
'Initialize事件相当于构造函数
07
Private
Sub

Class_Initialize
08
m_UserName = Empty
'设置UserName初始值为空字符串
09
End
Sub
10
11
'Terminate事件相当于析构函数
12
Private
Sub

Class_Terminate
13
Set
m_Profile =
Nothing
'将对象设置为Nothing,销毁对象
14
End
Sub
15
16
'Property Get语句,获取属性值或对象引用,Default只与Public一起使用,表示该属性为类的默认属性
17
Public
Default

Property
Get
UserName
18
UserName = m_UserName
19
End
Property
20
'Property Let语句,设置属性值
21
Public
Property

Let
UserName(newUserName)
22
m_UserName = newUserName
23
End
Property
24
25
Public
Property

Get
Profile
26
Set
Profile = m_Profile
27
End
Property
28
'Property Set语句,设置属性对象引用
29
Public
Property

Set
Profile(newProfile)
30
Set
m_Profile = newProfile
31
End
Property
32
33
'ToString方法
34
Public
Function

ToString()
35
ToString =
"Hello! "

&
Me
.UserName
'Me相当于C#中的this关键字
36
End
Function
37
End
Class
用VBScript创建的对象并不是真正的面向对象,它不能继承和实现多态,但是在QTP对象模型Utility中,提供了一个RegisterUserFunc方法可以覆写对象的方法,但这也不是真正意义上的面向对象。Class及其成员如何创建,上面已经简单介绍过,若要对其中的一些语句进一步了解,还需要去仔细阅读一些参考文档。下面我们来看看如何调用对象,在《VBScript基础上》变量赋值中也已经提到过。

1
Dim
u 
'定义对象变量名,注意变量名不能与类名相同,即使是大小写不同
2
Set
u =

New
User   
'创建对象用New语句
3
u.UserName =
"known"
'给属性赋值
4
MsgBox u.ToString()
'调用方法

2. Dictionary对象

Dictionary是存储数据键和项目对的对象,其主要属性有Count、Item、Key,主要方法有Add、Exists、Items、Keys、Remove、RemoveAll。下面是该对象的一个综合示例:

01
'定义并创建Dictionary对象,使用CreateObject创建并返回自动化对象的引用
02
Dim
d
03
Set
d = CreateObject(
"Scripting.Dictionary"
)
04
05
'向Dictionary对象中添加键值对
06
d.Add
"a"
,
"Known"

'Add方法第一个参数是Key值,第二个是Item值
07
d.Add
"b"
,
"Christina"
08
d.Add
"c"
,
"test"
09
d.Add
"d"
,
"fuck"
10
Call
ShowDictionary(d)
11
12
'遍历Dictionary对象,更改Item值
13
For
i = 0

To
d.Count - 1 
'Count返回Dictionary对象中的项目数
14
If
d.Exists(
"c"
)
Then

'Exists判断Dictionary对象中是否存在指定关键字
15
d.Item(
"c"
)=
"Test"

'Item返回Dictionary对象中指定Key的Item值
16
End
If
17
Next
18
d.Remove(
"d"
)
'Remove从Dictionary对象中删除一个关键字,项目对。
19
Call
ShowDictionary(d)
20
21
'输出Dictionary对象所有键值
22
Sub
ShowDictionary(dic)
23
Dim
str, a
24
a = dic.Items
'Items返回一个包含所有Item值的数组
25
For
i = 0
To
dic.Count - 1
26
str = str &a(i)&vbCrlf
27
Next
28
MsgBox(str)
29
End
Sub

3. FileSystemObject对象

FileSystemObject对象可以操作驱动器、文件夹及文件,其对象模型包含下面的对象和集合。

对象/集合描述
FileSystemObject主对象。包含用来创建、删除和获得有关信息,以及通常用来操作驱动器、文件夹和文件的方法和属性。和该对象相关联的许多方法,与其他 FSO 对象中的方法完全相似;它们是为了方便才被提供的。
Drive对象。包含用来收集信息的方法和属性,这些信息是关于连接在系统上的驱动器的,如驱动器的共享名和它有多少可用空间。请注意,"drive" 并非必须是硬盘,也可以是 CD-ROM 驱动器,RAM 磁盘等等。并非必须把驱动器实物地连接到系统上;它也可以通过网络在逻辑上被连接起来。
Drives集合。提供驱动器的列表,这些驱动器实物地或在逻辑上与系统相连接。Drives 集合包括所有驱动器,与类型无关。要可移动的媒体驱动器在该集合中显现,不必把媒体插入到驱动器中。
File对象。包含用来创建、删除或移动文件的方法和属性。也用来向系统询问文件名、路径和多种其他属性。
Files集合。提供包含在文件夹内的所有文件的列表。
Folder对象。包含用来创建、删除或移动文件夹的方法和属性。也用来向系统询问文件夹名、路径和多种其他属性。
Folders集合。提供在 Folder 内的所有文件夹的列表。
TextStream对象。用来读写文本文件。
FileSystemObject对象所有属性、方法及对象和集合的详细说明,您可以查阅参考文档,因为内容比较多,我们就看一个简单的示例,直观地来了解一下该对象的使用,该示例是将一个文件复制到指定文件夹下。

01
'定义并创建对象
02
Dim
fso, filePath, folderPath
03
Set
fso = CreateObject(
"Scripting.FileSystemObject"
)
04
filePath =
"C:\\Test.txt"
05
folderPath =
"D:\\Test"
06
Call
MoveFile(filePath, folderPath)
07
08
'将文件移动到指定文件夹
09
Sub
MoveFile(sourceFile, targetFolder)
10
Dim
file, fileName
11
'获取文件对象
12
Set
file = fso.GetFile(sourceFile)
13
'判断目标文件夹是否存在
14
If
Not

fso.FolderExists(targetFolder)
Then
15
fso.CreateFolder(targetFolder)
16
End
If
17
'将文件移动到目标位置
18
file.Move(targetFolder &
"\\"

&file.Name)
19
End
Sub

4. Err对象

Err对象是一个具有全局范围的内部对象,不必在代码中创建它的实例,含有关于运行时错误的信息。主要属性有Description、HelpContext、HelpFile、Number、Source,主要方法有Clear、Raise,其属性及方法的详细说明详见参考文档。下面的示例说明了Err对象的用法:

01
'示例1:
02
On
Error
Resume

Next
03
Err.Raise 6
'产生溢出错误
04
MsgBox(
"Error #"
&
CStr
(Err.Number)&
" "

&Err.Description)
05
Err.Clear
06
07
'示例2:
08
'定义数据库连接
09
Dim
conn
10
Set
conn = CreateObject(
"ADODB.Connection"
)
11
conn.BeginTrans
'开始事务
12
13
...
14
15
'提交数据库事务错误处理
16
On
Error
Resume

Next
17
If
conn.Errors.Count > 0
Then
18
conn.RollbackTrans
'回滚事务
19
Else
20
conn.CommitTrans
'提交事务
21
End
If
22
Err.Clear

5. RegExp对象

RegExp是正则表达式对象,提供简单的正则表达式支持功能。主要属性有Global、IgnoreCase、Pattern,主要方法有Execute、Replace、Test,其属性及方法的详细说明详见参考文档。下面的示例说明了RegExp对象的用法:

01
Function
RegExpTest(patrn, strng)
02
Dim
regEx, match, matches
'建立变量。
03
Set
regEx =
New
RegExp   

'建立正则表达式。
04
regEx.Pattern = patrn   
'设置模式。
05
regEx.IgnoreCase =
True

'设置是否区分字符大小写。
06
regEx.Global =
True

'设置全局可用性。
07
Set
matches = regEx.Execute(strng)
'执行搜索。
08
For
Each

match in matches   
'遍历匹配集合。
09
retStr = retStr &
"Match found at position "
10
retStr = retStr &match.FirstIndex &
". Match Value is '"
11
retStr = retStr &match.Value &
"'."

&vbCRLF
12
Next
13
RegExpTest = retStr
14
End
Function
15
16
MsgBox(RegExpTest(
"is."
,
"IS1 is2 IS3 is4"
))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: