下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 《VBS简易教程》

《VBS简易教程》.pdf

《VBS简易教程》

学研端
2011-10-07 0人阅读 举报 0 0 暂无简介

简介:本文档为《《VBS简易教程》pdf》,可适用于IT/计算机领域

VBS简易教程wwwitestwarecomVBS简介QTP的测试脚本语言采用的是VBScript而QTP的专家视图其实就是一个VBScript脚本编辑器因此测试人员可以利用简单易用而不失强大和灵活特性的VBScript脚本语言来增强自动化测试。什么是VBSVBScript简称VBS是VB的一个安全子集。VBScript是脚本语言它与其它脚本语言有很多共同的特点例如变量无关、解释执行等。VBScript是大小写不敏感的例如下面的脚本中定义变量时使用小写“str”使用变量时使用大写“STR”:Dimstrstr="helloworld!"MsgboxSTRVBS可在Windows本地执行(依靠WSH(Windows脚本宿主)来执行)也可在IIS中执行从而实现WEB页面的动态效果。VBS的发展历史VBS早在年就出现了时至今日已经发展到版本QTP使用的是VBS的版本。VBS的数据类型我们会看到很多脚本语言都是数据类型无关的通常脚本语言为了简化和方便起见会对数据类型进行自动的转换。VBS也一样只有一种数据类型–Variant。Variant既能是数字又能是字符串还能是各种类型的对象我们在使用变量时可以不声明变量是字符串还是数字VBS在执行时会自动识别和转变类型。这不禁让人想起“孙大圣”来“变变变”。例如下面的脚本:Dimvarvar=Msgbox"输入的是:"varVar变量赋值的是数字但是通过Msgbox显示的是字符串。然而这种不预先声明变量类型而直接使用的做法虽然比较方便但是会带来脚本可读性和可理解性的问题一般规范的脚本编写要求还是尽量能预先定义好变量的数据类型然后再使用。在VBS中提供了SubType来支持这种做法。SubType的数据类型包括下面的各种类型:‰Empty:未初始化的Variant。对于数值变量而言为对于字符串变量而言则为零长度的字符串。‰:不包含任何有效数据的Variant。‰Boolean:布尔变量值为True或False。‰Byte:到之间的整数。‰Integer:到之间的整数。‰Currency:到。‰Long:到之间的整数。‰Single:单精度浮点数负数范围从E到E之间正数范围从E到E之间。‰Double:双精度浮点数负数范围从E到E之间正数范围从E到E之间。‰Date(Time):日期型日期范围从公元年月日到公元年月日。‰String:字符串型最大长度可为亿个字符。‰Object:包含对象。‰Error:包含错误号。可用VarType函数来返回某个数据的Variant子类型如下面的代码:DimVarTypeCheckVarTypeCheck=VarType()'返回,表示整型MsgBoxVarTypeCheckVarTypeCheck=VarType(##)'返回表示日期型MsgBoxVarTypeCheckVarTypeCheck=VarType("VBScript")'返回表示字符型MsgBoxVarTypeCheck这可以用我自己来打个比喻我是一个人(Variant)具有所有普通人所具备的基本特征。但是在我来到这个世界之前我是“”的我甚至还不是“我”…刚出生的时候我是“Empty”的我既没有钱也不会说话…在父母生下我之前他们不知道我是男的还是女的但是他们坚信我要么是男孩要么是女孩还好“Boolean”不会有第三个值…后来我长大了在人生这个大舞台上的不同场合我要扮演的角色是不一样的在公司我是测试经理回到家我要孝顺父母教导小孩侍候老婆因此我需要随时在Byte、Integer、Long、Single、Double之间来回切换因为有时候我需要非常地精确有时候我要简单点…虽然我坚信人的一生有无限的可能赚的钱可以高达“”但是一个不小心也可能成为负资产身价掉到“”…有时候会觉得人生好郁闷啊虽然脑海里储存了亿个“String”可以用来描述这种郁闷的感觉但是很多时候我就是说不出话来…后来我想想从公元年月日到现在甚至我敢打赌直到公元年月日我们所有人其实都只是一个“Object”而已都会经过生老病死因此有些东西又何必那么执着呢?偶尔出一下“Error”也没什么大不了的嘛!VBS的变量何谓变量?简单而言可变的东西就叫变量不可变的东西叫常量。常量也叫恒量当然你也可以把它称为“永恒”这是一般女性都比较相信的一样东西。但是世界上真正永恒不变的恐怕就只有“变化”这个东西了。常量是相对的在VBS中一般常量在函数体内永恒不变例如下面脚本:FunctionTestConstVarConstlocalVar=MsgboxlocalVarEndFunction用Const声明一个常量localVar其取值为然后在TestConstVar这个函数体中的任何部分使用localVar都能获取到不变的值。但是如果跳出了这个函数体则将不再能获取到localVar的值(所以所“永恒是相对的”)例如下面脚本中第一行代码将得到消息框显示“”的值而第二句的Msgbox将显示一个空值:TestConstVar'调用TestConstVar函数MsgboxlocalVar'在TestConstVar函数之外使用其内部定义的常量FunctionTestConstVarConstlocalVar=MsgboxlocalVarEndFunctionTips:定义常量的好处是让代码可读性和可维护性更强些通常在集中的一个地方例如脚本的最开始定义全局的常量这样易于后续的维护和修改。既然“永恒是不现实的”那么我们只能期待好好处理“变量”了。我们尝试把那些容易变化的东西用一个名字记住它然后就可以随时知道它的变化了、掌控它的变化了也许这才是真正的“永恒”。如何定义“永恒”在VBS中可以用Dim来声明一个变量例如:DimMyVariant也可以不预先定义而是在变量赋值时直接使用变量例如:MyVariant=MsgboxMyVariant当然按照规范的VBS代码编码规范而言我们不推荐这样做规范的做法是用Dim预先定义变量并且在开始的时候使用“OptionExplicit”例如下面脚本:OptionExplicitDimMyVariantMyVariant=MsgboxCStr(MyVaraint)这样定义后执行第四句时就会报错这样就可避免由于“笔误”造成的困扰了。请注意上面的脚本中定义的是“MyVariant”使用的是“MyVaraint”一字之差可能造成你的脚本莫名其妙地出错并且这个错误在你发现这一字之差之前是很难发现的因为如果不使用“OptionExplicit”的话它是不会主动提示错误的。Tips:定义的变量之间可以用逗号隔开这样可以在一行中定义多个变量这样会节省不少代码行呢!DimTop,Left,Right,Bottom不过如果你的老板是以代码行来计算你的工作量的话建议还是一行定义一个变量VBS的数组从变量到数组变量只能存储一个值如果要想存储多个值就要考虑使用数组了。定义数组可以用下面的简单方式:DimMyArray()在这里要出一个简单的数学题:上面定义的数组中可以存储多少个值呢?回答是个的“扣分!”答案是个因为VBS的数组是从开始计数的。可以用UBOUND函数来获取数组的最高Index:DimMyArray()ForI=toMyArray(I)=INextMsgboxUBOUND(MyArray)用一维数组到多维数组当然如果一维的数组不够用不足以表达的话也可以使用二维、三维最高去到维的数组但是我想大部分像我一样智力水平的人是很难理解维的空间是怎样的情形也许只有爱因斯坦这样的天才可以搞明白它。一般比较常用的是、维的数组例如可以用下面定义的二维数组来代表一个表格的数据:DimMyTable(,)MyTable这个数组可以表示一个行列的表格。从固定数组到动态数组数组给了我们扩展变量存储空间的可能性但是很多时候我们无法预知需要定义一个多大的数组就像当初预计只是生一个小孩因此买个两房一厅的房子就够住了岂料到意外出现了又来了一个“小天使”两房一厅就不够用了因此要考虑“扩容”。在VBS中可以通过Redim来重新定义数组的大小例如下面的例子:DimMyArray()RedimMyArray()MyArray()="客厅"MyArray()="小yoyo的房间"MyArray()="我和老婆的房间"'如果另外一个“小天使”降临了RedimPreserveMyArray()MyArray()="小天使的房间"ForI=toUBOUND(MyArray)MsgboxMyArray(I)Next注意如果要使用动态数组则定义数组时不要输入数组大小例如DimMyArray()然后在后续使用数组之前通过Redim来重新定义数组的大小。Tips:Preserve这个关键字很关键如果不使用Preserve的话则“小天使”的到来会把我和老婆还有小yoyo都踢出去这样的结局会很糟糕:(VBS的运算符什么是运算符?如果程序中仅仅能做变量的定义和赋值的话未免太枯燥了这好比自己跟自己玩给自己穿不同的衣服但是没有其他人做出评价一样。如果变量之间能互相交互有时候你借我一下钱有时候我借你一下钱时不时比较一下谁更帅如果情投意合的话就结合在一起嗯…这样的话这个世界才精彩。为了让变量之间能交互VBS提供了运算符。VBS支持广泛的运算符包括数学运算符、比较运算符、连接运算符、逻辑运算符。数学运算数学运算符包括:加法:减法:乘法:*除法:在VBS中如果是数字相加的话就用“”号把两个数字连接再赋值即可:Dima,b,suma=b=sum=abMsgboxsum如果a和b换成是字符串用“”连接会等到什么结果呢?Dima,b,suma="hello"b="world!"sum=abMsgboxsum没错结果是“helloworld!”因为VBS能自动识别变量类型如果是字符串的话加法操作就变成了字符串的连接操作了真聪明!但是按照规范的做法我们不鼓励这样使用“”来连接字符串串而是用“”操作符来连接字符串目的是为了避免混淆提高代码的可读性和规范性。除法用“”来连接两个数字例如:Dima,b,Resulta=b=Result=abMsgboxResult结果是哎?块钱个人瓜分每个人得到块钱还剩块钱哪去了?嗯VBS帮你保留了因为使用的是“”运算符进行的是整除运算不能整除的就留给VBS“享用”了。如果想一分不剩地把它瓜分掉的话就应该掉个方向使用“”运算符进行浮点运算:Dima,b,Resulta=b=Result=abMsgboxResult这次得到的就是可惜我国货币最小单位是“分”否则后面的“小钱”也能瓜分掉。连接运算如果我们把前面的加法中的“”换成“”的话会出现什么结果呢?Dima,b,suma=b=sum=abMsgboxsum结果是“”哇不错嘛简直就是变魔术两个块钱硬币碰一下就变成了块钱。不过不要开心得太早VBS帮你做的可不是加法运算而是连接运算它仅仅帮你把两个“”并排在一起展现给你瞧瞧而已。“”用于连接字符串当然如果给定的变量不是字符串的话VBS会自动把它们转换成字符串再连接在一起。比较运算如果有个人腰缠万贯找到你然后非要跟你比一下谁更“幸福”怎么办呢?我的办法如下:Dima,b,Resulta=b="MyWorld"Result=a>bMsgboxResult结果是False也就是说a不大于b哈哈我赢了!(阿Q精神万岁!)下次记得找同类型的东西进行比较啰!VBS支持以下比较运算符:等于:=小于:<小于或等于:<=大于:>大于或等于:>=不等于:<>比较的结果要么是True要么是False。逻辑运算VBS支持的逻辑运算操作符包括:与:And或:Or非:Not异或:XorDima,b,Resulta=Trueb=FalseResult=aAndbMsgboxResult对于与操作(And)只要参与运算的变量中有一个是False则结果为False就像现在的计划生育政策一样父母双方只要有其中一位是城市户口的就不允许生第二个小孩。相比而言或操作(Or)就宽松很多了只要有其中一位是农村户口的就允许生第二个小孩什么时候我国计划生育政策能这么宽松就好了…VBS的条件语句有了变量和数组可以暂存各种数据通过变量间的赋值和运算可以使变量们进行交互。但是如果你是上帝你也许希望可以更加灵活地控制它们的交互行为不能随随便便就让一个变量给赋值了或者随随便便就让一个变量与另外一个变量结合了。在VBS中可以通过条件语句来限制、控制变量交互行为。VBS的条件语句有两种分别是IfThenElse和SelectCase。IfThenElse先来看IfThenElse。如果你向一位心慕已久的美丽女生求婚也许要满足一定的条件才行:如果你有房子和汽车那么“OK我答应嫁给你”否则“现在我们都还不成熟还是等等吧…”这在VBS中可以这样表达:DimHouse,CarHouse=Car=IFIs(House)orIs(Car)ThenMsgbox"现在我们都还不成熟还是等等吧…"ElseMsgbox"OK我答应嫁给你"EndIF当然条件有可能还要更苛刻些例如人要长得英俊啦要有幽默感啦要专一啦…有些女孩不会那么苛刻但是有自己的评分表满分就OK:例如:如果你很有钱那么得分否则如果你很英俊那么得分否则如果你很有才那么得分否则“你找别人去吧!”这在VBS中可以这样表达:DimMoney,handsome,talent,ScoreMoney=handsome=talent="非常有才"IFMoney>thenScore=ElseIFNOTIs(handsome)thenScore=ElseIFNOTIs(talent)thenScore=ElseMsgbox"你找别人去吧!"EndIFIFScore>=thenMsgbox"OK!我嫁给你吧"EndIF幸好我还属于比较有才的那种人否则我老婆当初可能就会对我说:“你找别人去吧!”SelectCase想当初还是太急了吧?!如果让你重新选择的话你其实是有很多选择余地的因为也许你不知道暗恋你的女孩有那么多吧?!她们各具风格和特色有温柔可爱型的、有身材火辣型的、有贤慧典雅型的。忽然间理解了韦小宝的烦恼真不知道该选哪个好还是写个VBS脚本来帮你选一下吧:DimStyleStyle="身材火辣型"SelectCaseStyleCase"温柔可爱型"Msgbox"我喜欢!"Case"身材火辣型"Msgbox"超喜欢!"Case"贤慧典雅型"Msgbox"嗯跟她结婚比较合适!"CaseElseMsgbox"你不是我的Style!"EndSelectVBS的循环语句大部分人都不能活到岁为什么呢?每年春夏秋冬天每天小时大部分人在重复着每天的生活但是每天都潜伏着危机一个不小心你就不能完成这次的循环。在VBS中有种方式表达循环:Do…LoopWhile…WendFor…NextFor…EachDo…Loop如果你一生平平安安快快乐乐的生活到老的话那真是太幸福了!Age=DoUntilAge=Age=AgeMsgboxAgeLoop但是很多人没有你这么幸福上帝在适当的时候就会召见他的:Age=DoUntilAge=Age=AgeMsgboxAgeIFAge=ThenMsgbox"天妒英才英年早逝"ExitDoEndIFLoopTips:VBS支持把Until放到后面例如:Age=DoAge=AgeMsgboxAgeIFAge=ThenMsgbox"天妒英才英年早逝"ExitDoEndIFLoopUntilAge=While…Wend正所谓“命里有时终须有命里无时莫强求”上帝早就安排好了只要时机成熟就能结果。我曾经看到一对夫妻非常想要小孩但是由于种种原因妻子老是怀不上我就跟他们说:“放心吧!也许老天正在考验你们只要不断努力你们会有的”DimTry,GotBabyTry=GotBaby=FalseWhileGotBaby=FalseTry=TryIFTry=ThenGotBaby=TrueMsgbox"恭喜你!经过不懈努力你终于怀孕了!"ElseMsgbox"JustTryagain!"EndIFWendFor…Next挫折总会有的每天都碰到一些挫折不是更好吗?“小小挫折等于激励!”总比那些度日如年每年做重复的事情、每天在做重复的事情、甚至每分钟都在做重复的事情的人来得精彩吧?!这种人让他活到一百岁又怎样呢?DimYear,Day,Hour,Minute,SecondForYear=ToForDay=ToForHour=ToForMinute=ToForSecond=ToMsgboxCStr(I)"这样重复地数日子杀掉我算了!"NextNextNextNextNext郑重声明:如果你运行上述脚本如果想结束运行请打开Windows任务管理器找到Wscriptexe进程并把它结束掉。For…Each如果上天只给你再有天的命你会做什么呢?你会选择马上结束自己的生命还是认真地活过这天中的每一天呢DimCountDownDayCountDownDay=Array("画一天的画","跟老婆聊一天","带上小孩去动物园玩一天","和老爸一起抽烟、喝茶、饮酒过一天","带老妈去坐火车游一天","找小学、中学、大学的同学们聚一天","拜访小学、中学、大学的老师一天","骑上单车游一天","用一天的时间把所有以前想吃而不敢吃、不舍得吃的东西都吃遍","躺在床上静静地睡一天")ForEachelementInCountDownDayMsgboxelementNextVBS的程序如果把所有脚本一行行地堆砌在一起当然也可以把所有功能实现但是这种代码被称为“意大利面条”(所有功能模块都搅在一起了)或者被称为“铁板程序”(一行行堆上去)。为了使代码可读性更强、可维护性和可重用性更强需要把这些堆砌在一起的脚本按不同的功能、过程进行分类封装成函数或子过程函数、过程之间互相可以调用从而增强代码的可重用性和可维护性这样一个函数或过程中的脚本也不会太多不会看得眼花缭乱的因此也就增强了代码的可读性。在VBS中程序分为两种:Sub程序和Function程序Sub在VBS中Sub类型的程序是指那些执行了脚本但是不返回结果的程序。如果把工人烧焊的整个过程分解成调用多个Sub程序的话可以用VBS这样写:Sub戴上手套…EndSubSub戴上安全护帽…EndSubSub准备好烧焊设备…EndSubSub拿起烧焊枪指向烧焊点…EndSub当然“准备好烧焊设备”这个过程可能有些复杂所以可以把里面的代码再细分以下独立出更多的子过程来(Sub)。如果烧焊工需要根据自己的心情来挑选不同颜色的手套的话则需要在定义“戴上手套”这个Sub的同时定义参数了例如:Sub戴上手套(手套颜色)…EndSubTips:在代码中调用Sub可以有两种方式一种是用Call语句来调用例如:Call戴上手套(红颜色手套)注意用括号把输入参数括起来另外一种则直接使用例如:戴上手套红颜色手套FunctionSub是不返回任何结果的如果烧焊工在“戴上安全护帽”这个过程中没有很好地检查佩戴的效果的话可能会造成很严重的后果可能会在后续的烧焊过程中把眼睛弄瞎了!为此应该改成用Function封装“戴上安全护帽”这个过程在调用这个过程时判断返回的值是否为“佩戴正确”如果是才继续后续操作。Function戴上安全护帽佩戴安全护帽检查佩戴情况IF佩戴正确Then戴上安全护帽=TrueElse戴上安全护帽=FalseEndIFEndFunction注意在VBS中返回值是赋值给函数名的例如:戴上安全护帽=True这样就可以在调用时判断是否正确佩戴了安全护帽:戴上手套(红颜色手套)IF戴上安全护帽=TrueThen准备好烧焊设备拿起烧焊枪指向烧焊点EndIFTHEENDVBS简易教程到此结束。更多VBS和QTP编程教程正在wwwitestwarecom开发中敬请期待VBSStepbyStep()VBS简介docVBS简介什么是VBSVBS的发展历史VBSStepbyStep()VBS的数据类型docVBS的数据类型VBSStepbyStep()VBS的变量docVBS的变量何谓变量?如何定义“永恒”VBSStepbyStep()VBS的数组docVBS的数组从变量到数组用一维数组到多维数组从固定数组到动态数组VBSStepbyStep()VBS的运算符docVBS的运算符什么是运算符?数学运算连接运算比较运算逻辑运算VBSStepbyStep()VBS的条件语句docVBS的条件语句IfThenElseSelectCaseVBSStepbyStep()VBS的循环语句docVBS的循环语句Do…LoopWhile…WendFor…NextFor…EachVBSStepbyStep()VBS的程序docVBS的程序SubFunctionTHEEND

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/20

《VBS简易教程》

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利