vbs外部调用
一.QTP调用外部VBS的方法
加到QTP的Resource中
在QTP菜单中设置, 菜单FileàSettingsàResource,将要加载的VB脚本添加进来。
举例:
步骤1:在D盘下新建一个VBS文件,叫“ test.vbs”,脚本内容如下:
Function fun(a, b)
fun=a+b
End Function
步骤2:在QTP 里新建一个Test, 叫“Test1“,点击菜单FileàSettingsàResource,将要加载的VB脚本“ test.vbs”加进来
步骤3:在脚本里调用这个函数:
msgbox "1+2= “&fun(1,2)
运行结果:
使用QTP函数ExecuteFile
通过ExecuteFile方法将要加载的VBS脚本加载进来。
语法:ExecuteFile “Filename”
参数说明:Filename-是要执行的文件的名称,包括文件路径。最好用绝对路径。
举例:
步骤1:在D盘下新建一个VBS文件,叫“ test.vbs”,脚本内容如下:
Function fun(a, b)
fun=a+b
End Function
步骤2:在QTP里加载这个VBS脚本:
executefile "D:\test.vbs"
步骤3:在脚本里调用这个函数:
msgbox "1+2= “&fun(1,2)
运行结果:
使用VBS函数ExecuteGlobal
ExecuteGlobal是VBS的函数而非QTP特有的函数,,ExecuteGlobal的功能可以引入其它vbs文件的函数
语法:ExecuteGlobal statement
参数说明:statement-可以是一段函数体或一个字符串变量
举例:
步骤1:在D盘下新建一个VBS文件,叫“ test.vbs”,脚本内容如下:
Function fun(a, b)
fun=a+b
End Function
步骤2:在QTP里加载这个VBS脚本:
dim fso : set fso = createobject("scripting.filesystemobject")
executeglobal fso.opentextfile("D:\test.vbs ", 1).readall
set fso = nothing
步骤3:在脚本里调用这个函数:
msgbox "1+2= “&fun(1,2)
运行结果:
3种方法的优缺点
方法一:加到QTP的Resource中。 优点:是QTP自带的引用外部VBS函数的方法,非常稳定,同一个测试脚本的所有action都可以调用;缺点:不够灵活,经常的情况是使用同一个测试框架对于不同的项目需要引入不同的VBS文件。
方法二:使用QTP函数ExecuteFile。优点:灵活性好,方便自己写语句来引入函数;缺点:只能被当前的action调用,不能垮action调用,调试时黄色指针跳动混乱。
方法三:使用VBS函数ExecuteGlobal。优点:1.自己写代码,非常灵活
2.外部函数由于从内存中读取,避免了I/O,执行速度加快,而且通过这个方法调用其它文件函数非常稳定;缺点:一下子把可能需要用到的VBS文件全部读入内存,势必会增加内存开销。
实践
分别以导入文件的方式和使用ExecuteFile的方式关闭所有的浏览器和记事本
导入文件的方式
步骤1:新建脚本文件,另存为scritp.vbs
脚本如下:
Sub CloseIE()
systemutil.CloseProcessByName("IEXPLORE.EXE")
End Sub
Sub CloseNotepad()
systemutil.CloseProcessByName("Notepad.exe")
End Sub
File-->Settings-->Resources在“Associated function libraries”
步骤二:导入该文件
可以使用绝对路径,也可以使用相对路径,建议使用相对路径,如下图
步骤三:在QTP的专家视图中输入如下语句,执行,发现QTP把所有的浏览器和记事本都关闭了。
CloseIE()
CloseNotepad()
ExecuteFile的方式
步骤一:同上
步骤二:
executefile "..\script.vbs"
CloseIE()
CloseNotepad()
总结
1 在写VBS脚本时,为了避免语法错误.可以先在QTP里编写脚本,运行通过了,再保存成外部VBS脚本。
2 新建VBS脚本时,先新建一个文本文件,再将其后缀改成.VBS,注意,要先将文件的扩展名显示出来:工具à文件夹选项à查看, 把“隐藏已知文件类型的扩展名 ”的勾去掉。
否则, 文件的类型还是.txt的, 运行脚本时会提示“找不到文件”。
vbs外部调用的更多相关文章
- C#调用vbs脚本实现Windows版Siri
最近新加入,把自己一些有意思的小东西分享给大家,我是一个学生,代码写得少,哪里不规范,希望大家见谅. 这事我封装好的一个类,可以直接实例化对象之后,调用"对象.Talk()"方法, ...
- 在WinCC中通过VBS操作SQL Server2005
在项目中需要在一定条件满足时,保存一些数据到数据库中,并可根据条件查询.考虑到WinCC6.2以后采用的就是SQL Server2005数据库,所以直接利用该数据库即可,通过SQL Server Ma ...
- 使用vbs脚本进行批量编码转换
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看分析在Linux系统下开发的项目代码,我们知道Linux系统中文本文件默认编码格式是UTF-8,而Windows中文系统中的默 ...
- ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave由于鼠标移动速度过快导致问题解决办法
记录两个项目开发中遇到的问题,一个是ECharts外部调用保存为图片操作,一个是workflow工作流连接曲线onmouseenter和onmouseleave事件由于鼠标移动过快触发问题. 一.外部 ...
- vbs让电脑发音说话
Dim vbs1 'set vbs1 = WScript.CreateObject("WScript.Shell") set vbs1 = WScript.CreateObject ...
- WSF脚本详解:组合JS和VBS代码
1.概述 Windows Script Host除了提供一个对象模型之外,还提供了一种脚本框架,这就是WSF脚本.通过WSF约定的标记元素,可以将多种脚本语言写的代码块组合起来,完成任务.除此之外,还 ...
- HTA全解析:给VBS和JS一个强大的交互界面
1.概述 HTA全称Html Application,在Windows中由mshta.exe加载执行,是一种本地程序.可使用html元素来构建界面,用JS或VBS来构建执行逻辑,从而强化Windows ...
- vbs 中文字符串
vbs 字符串包含中文字符,文件以UTF-8无BOM格式保存,就会出现“编译器错误: 未结束的字符串常量”错误,改以ANSI保存就没有这个问题
- 使用bat/vbs/ahk对Windows下进行自动化操作
回想90年代,我们在DOS下使用各种命令链对操作进行简化和自动化,如DOS 5.0添加的DosKey,利用管道和重定向对多组命令进行链式操作.后来使用了Ubuntu和其它Linux发型版后,bash下 ...
随机推荐
- jquery实现当前页面按钮点击全屏,点击退出全屏
var fullscreen=function(){ elem=document.body; if(elem.webkitRequestFullScreen){ elem.webkitRequestF ...
- PHP判断访问者手机移动端还是PC端的函数,亲测好用
,用手机访问PC端WWW域名的时候,自动判断跳转到移动端,用电脑访问M域名手机网站的时候,自动跳转到PC端,我们团队在开发erdaicms二代旅游CMS网站管理系统的时候(http://www.erd ...
- WordCount的程序设计没写出来怎么办
这一星期要完成三个小作业,完成前两个已经让我很吃力的了,现在这个WordCount的编程我都没有头绪,不知道从何下手.虽然要求很看起来很简单,可是不知道怎么去设计这个程序,这两天我也在积极找书学习相关 ...
- 初识mvc分层思想
首先要清楚的是: mvc是一种设计模式,一种分层思想,没有具体的技术与之对应,无论是js还是java或者其他的技术都可以运用. 既然是分层那么这些层都有哪些职责呢? View层(界面层): 为用户展示 ...
- 你知道哪些linux命令,能把文件上传到远程linux服务器
多数情况下 企业的服务基本都是部署在linux服务器 那对于测试同学,必须掌握基本的linux命令 至少要知道怎么部署整体环境 部署过程中,经常需要的操作,是向服务器上传部署包 你一般都是 ...
- Android 自定义Application
在android中 自定义Application 常用的作用是1 保存在程序运行中的全局变量 实例:public class GlobalApp extends Application{ privat ...
- 服务器磁盘扩展卷时遭遇“There is not enough space available on the disk(s) to complete this operation.”错误
在ESX VM的一台服务器由于磁盘空间告警,打算决定给E盘扩展空间,增加20G的空间,在操作过程遭遇了Expanding Disk Volume gives error "There is ...
- linux screen 命令详解[转]
一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...
- boneCP原理研究
** 转载请注明源链接:http://www.cnblogs.com/wingsless/p/6188659.html boneCP是一款关注高性能的数据库连接池产品 github主页 . 不过最近作 ...
- db2数组、函数
一. 数组 在db2中,创建一个数组会在functions下生成两个对象:sys类型和用户类型的Array /*创建数组*/ ) array[]; /*删除数组*/ drop type arrName ...