VBScript基础讲座.doc_第1页
VBScript基础讲座.doc_第2页
VBScript基础讲座.doc_第3页
VBScript基础讲座.doc_第4页
VBScript基础讲座.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VBScript基础讲座一目录【VBScript基础讲座 01】变量显示声明【VBScript基础讲座 02】Function 与 Sub 【VBScript基础讲座 03】类的组成 【VBScript基础讲座 04】Dictionary 对象 【VBScript基础讲座 05】函数指针 【VBScript基础讲座 06】单例模式 【VBScript基础讲座 07】工厂设计模式讲座01 VBScript是Visual Basic Script的简称,即 Visual Basic 脚本语言,有时也被缩写为VBS。由于QTP的脚本语言是基于VBS的,因此VBS对于学习自动化还是起到了相当大的作用,VBScript可以通过Windows脚本宿主调用COM,因而可以使用Windows操作系统中可以被使用的程序库,比如它可以使用Microsoft Office的库,WSH,AOM等,当然它也可以使用其它程序和操作系统本身的库。因此学习VBScript对于测试人员来说就显得非常的重要。 定义变量 - Dim 例如: Dim helloworld 定义变量helloworld = zzxxbb112 给变量进行赋值msgbox helloworld 弹出消息框显示变量复制以上保存为helloworld.vbs后直接运行后由于VBScript语法不是非常的严谨,因此我们其实可以不用申明变量就可以直接使用例如:helloworld = zzxxbb112 给变量进行赋值msgbox helloworld 弹出消息框显示变量这样的话就可以省去很多申明变量的时间,增加代码开发的速度,但是这样却会有一个问题,我们来看一下脚本例如:helloworld = zzxxbb112 给变量进行赋值msgbox helloword 弹出消息框显示变量保存以上脚本后,运行之后,会发现弹出框并没有任何数据,而是一个空值为什么?因为我们这里输入的helloworld 被我们拼写成了helloword少了一个L,因此导致打印出来一个空值,当我们在大量声明变量的时候其实是很容易范这种错误的,因此这里就要给代码中加上显示声明,这样才不会出现上述的这种情况,下面就来看一下具体怎么使用。 显示声明 - Option Explicit 强制所有变量必须先声明才能使用 例如:Option Explicit 显示声明变量Dim helloworld 定义变量helloworld = zzxxbb112 给变量进行赋值msgbox helloword 弹出消息框显示变量运行以上代码就可以直接定位问题,出现错误提示“变量未定义”很多朋友在VBS时,比较懒,不喜欢使用显示声明,其实显示声明能够检查你的程序,建议大家能够养成这个好习惯,否则在大量的变量面前你一定会束手无策,或者累死累活,简单总结下它的优点:1. 显示声明是对脚本编写人员的一种好习惯 2. 可以防止很多不必要的错误发生,大型项目更加明显 3. 减少资源的占用 4. 代码提示的优势 讲座02大家都知道开发人员在代码时都是一个个模块,一个个函数拼接起来的,而且把一大堆的代码写在一起,看起来非常的凌乱,会使用函数对代码进行必要的模块化封装也是对于编程人员的一种能力,因此我们必须要学会函数的应用。 今天来介绍下VBS中函数的应用,并且此应用在我们编写公共函数库时是经常用到的,因此大家可不能小看,这一章的内容比较基础,有点基础的朋友可以直接略过。下面来介绍一下VBS中的两个函数: Sub 过程 - SUB其实就是一个过程复用,没有参数,没有返回值。 Sub hello msgbox zzxxbb112End Sub Function 函数 - FUNCTION是一个我们经常会用到的一个函数,可以有返回值,也可以有参数 Function hello(name) hello=name 返回函数 End Function myName=hello(zzxxbb112) 返回函数 msgbox myName讲座03相信对JAVA有一定了解的朋友一定对类这个名词不陌生,但是大家可能没有想过在VBS中使用CLASS类吧,其实CLASS类在自动化测试中是相当常用的,对于代码量增大时,类的结构化就充分体现出了它强大的优势,下面我们就来看一下类的组成部分以及一些用法。 初始化与终结化的应用 Class User Private Sub Class_Initialize 当这个类被创建时执行 End Sub Private Sub Class_Terminate 当类被销毁时执行 End Sub End Class Get与Set的应用 Class User *定义变量名* Private s_name Private s_age *定义Get方法* Public Property Get name name=s_name End Property Public Property Get age age=s_age End Property *定义Set方法* Public Property Let name(new_name) s_name=new_name End Property Public Property Let age(new_age) s_age=new_age End Property End Class Set user1=New user user1.age = 100 = zzxxbb112 MsgBox 姓名:++ 年龄:+user1.age 函数的应用 Class User Sub msgNow MsgBox now End Sub Function msgContent(content) MsgBox content End Function End Class Set user1=New user user1.msgNow user1.msgContent test讲座04这次课程我们主要来讲解DICTIONARY对象的使用,讲解此对象的目的是为了后续在讲解测试对象字典的应用以及面向对象的代码设计模式做铺垫。因此虽然本次课程内容相对较为简单,但是DICTIONARY这个知识点是非常重要的,在后续的课程内容中我们会经常用到,因此希望大家在看完之后能够多多实践,掌握好它为后续课程打好扎实的基础。 Dictionary - 字典对象说明:一个能够增删改的容器,同时也是一个COM组件 添加项Set dic=CreateObject(Scripting.Dictionary) dic.Add a,test was a dic.Add b,test was b dic.Add c,test was c MsgBox dic.Item(a) item可省略 删除项Set dic=CreateObject(Scripting.Dictionary) dic.Add a,test was a dic.Add b,test was b dic.Add c,test was c MsgBox dic.Count 3个 dic.Remove(a) MsgBox dic.Count 2个 Msgbox dic(a) 已空 修改项Set dic=CreateObject(Scripting.Dictionary) dic.Add a,test was a dic.Add b,test was b dic.Add c,test was c MsgBox dic(a) 修改之前 dic.Item(a)=zzxxbb112 MsgBox dic(a) 修改之后讲座05这一章我们来讲一下VBS中的函数指针,我们都知道函数代码是程序算法的一部分,它和数组一样也需要占用一部分的存储空间,也都有相应的地址。我们不但可以可以使用指针变量指向数组的首地址,同样也可以使用指针指向函数代码的首地址,我们把指向函数代码首地址的指针变量称为函数指针。 GetRef - 它所提供的功能被称为函数指针,即它指向了在指定事件发生时要执行的过程的地址。 实例变量强制申明 Option Explicit 定义变量 Dim new_helloworld 定义helloworld函数 Function helloworld(content) MsgBox content End Function 使变量new_helloworld指向helloworld函数 Set new_helloworld=GetRef(helloworld) new_helloworld test可以直接复制黏贴以上代码执行下,这段代码的意思就是把变量new_helloworld的指针指向helloworld函数,这样new_helloworld就具有了helloworld函数的功能。总结 大家必须要深刻理解函数指针的含义,这样会对于以后的系列讲座中有所帮助,后续的讲座中我会讲解使用指针函数重写QTP函数、命令包装,事件处理等都会跟此知识点有关联。敬请期待。讲座06 学过JAVA开发的朋友都应该很清楚,在JAVA的设计模式中有单例模式、工厂模式等,由于JAVA是面向对象的语言,因此构造这些模式都很方便。其实在VBS中也可以通过代码来实现,今天就来讲一下单例模式的应用。Option Explicit Public oExcel 声明全局变量 Dim bAleadyInit 判断对象是否存在的标志位 检查对象是否已经被初始化 bAlreadyInit = False If IsObject(oExcel) = True Then 对象初始化 If Not oExcel is Nothing Then 激活状态 bAlreadyInit = True End If End If 如果标志位是FALSE创建一个实例对象 If bAlreadyInit = False then Set oExcel = CreateObject(Excel.Application) oExcel.Whatever 此处的WHATEVER只是代替是任意的方法,并没有此方法相信大家在创建EOM的时候一定都碰到过,进程里创建了很多EXCEL.EXE,这种情况是很常见的,如果你没有使用单例模式的话,接下来我们先来解释下以上代码的具体含义这里首先是声明一个全局变量,对这个变量做判断,如果存在就把标志位设置为TRUE,如果不存在就直接新建一个实例,这样就能保证他只会有一个实例,但是就这样一段并不能达到我们想要的效果,我们需要把它封装成函数,这样才能方便我们进行调用。Option Explicit Public oExcel 声明全局变量 Function GetExcel Dim bAleadyInit 判断对象是否存在的标志位 检查对象是否已经被初始化 bAlreadyInit = False If IsObject(oExcel) = True Then 对象初始化 If Not oExcel is Nothing Then 激活状态 bAlreadyInit = True End If End If 如果标志位是FALSE创建一个实例对象 If bAlreadyInit = False then Set oExcel = CreateObject(Excel.Application) Set GetExcel = oExcel End Function Set oExcelInstace = GetExcel 获取对象 oExcelInstace.Whatever 使用对象使用以上方法就可以达到永远只有一个实例对象,如果有创建,直接引用已创建的实例,如果没有直接创建一个。使oExcel 这个全局变量永远只有一个实例。但是这样写我们会发现一个问题,当我们在创建多个对象并将指针指向全局变量的这个实例时,我们都需要销毁这些对象,但是就算我们把这些对象全部销毁,全局变量的实例还是一直会持续下去,不会释放。因此我们需要使用类进行包装来改善这种情况。Option Explicit Public oExcel 声明全局变量 Class ExcelWrapper Private oExcelObject Private Sub Class_Initialize Dim bAleadyInit 判断对象是否存在的标志位 检查对象是否已经被初始化 bAlreadyInit = False If IsObject(oExcel) = True Then 对象初始化 If Not oExcel is Nothing Then 激活状态 bAlreadyInit = True End If End If 如果标志位是FALSE创建一个实例对象 If bAlreadyInit = False then Set oExcel = CreateObject(Excel.Application) Set oExcelObject = oExcel End Sub Private Sub Class_Terminate oExcelObject.Quit Set oExcelObject = Nothing End Sub Public Sub Open(sFileName) 写入打开文件的代码 End Sub Public Function GetSheetData(sSheet) 写如读取单元格的代码 End Sub *等等,可以写更多方法* End Class Set oExcelInstace = New ExcelWrapper oExcelInstace.Open(Something)这样一个完美的单例模式就完成了,当我们创建ExcelWrapper这个类包装的时候就只会调用单个实例,在类销毁时,会自动把销毁此全局变量的实例,这样就可以使我们再也不会在进程里看到N多个EXCEL进程实例了。在下次的课程中我会讲解工厂模式的应用,敬请期待!讲座07本文主要讲解一种强大的设计模式,在阅读本文之前请先确保你已经理解了一下几篇文章:【软件测试自动化-VBScript基础讲座 3】= 类的组成 =/zzxxbb112/archive/2009/11/13/4805618.aspx【软件测试自动化-VBScript基础讲座 4】= Dictionary 对象 =/zzxxbb112/archive/2009/11/18/4830732.aspx【软件测试自动化-VBScript基础讲座 6】= 单例模式 =/zzxxbb112/archive/2009/11/26/4879692.aspx 工厂模式 - 一种创建模式,也就是说它可以用于创建和初始化某个对象,就像它的名字一样,我们可以把我们需要东西都放在这个工厂里,并可以根据我们的需要为此工厂抽象出一些方法,并提供相应的接口来调用,这样我们就可以自由的通过这些接口来拿工厂里的方法,这就是此设计模式的作用。接下来我们就来看一个最简单的额例子。 Function ObjectFactory(sObjectName) Select Case sObjectName Case Search Edit Set ObjectFactory = Browser(micClass:=Browser)._ Page(micClass:=Page).WebEdit(name:=wd) Case Search Button Set ObjectFactory = Browser(micClass:=Browser)._ Page(micClass:=Page).WebButton(name:=百度一下) Case Else Set ObjectFactory = Nothing End Select End Function ObjectFactory(Search Edit).Set zzxxbb112 ObjectFactory(Search Button).click以上代码是一个最简单的演示,此代码不一定有实际用途,主要是为了能让大家更好的理解工厂模式,我们可以看到使用以上的方法,我们可以很方便的管理我们需要的对象,并对其进行命令式的调用,并可以为这些对象创建一个公共接入点。以上这个例子随便可以使用我们调用方便,并且易于实施和维护,但它缺有个致命的缺陷,那就是当使用工厂模式创建完对象之后,如果再次进行创建,它就会再实例化一个对象出来(特别是针对CREATEOBJECT命令的情况下),这样就会出现对象混乱的现象,解决方案就是使用单例模式凝聚对象实体,工厂模式来管理实时各个对象。来看下一个例子。Public oOutputs Set oOutputs = New OutFactory Class OutFactory Public Channels 定义变量 Private Sub Class_Initialize Set Me.Channel

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论