外部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的调用的更多相关文章
- QTP学习一添加默认的注释及调用外部vbs文件
一.添加默认注释 1.新建一个TXT文档,将要添加的注释写在文档中 2.再将文档名改为:ActionTemplate.mst 3.将文件放到QTP安装目录(默认为:C:\Program Files\H ...
- Axure文本框验证和外部url的调用
文本框的验证和外部url的调用: 场景: 当输入文本框中的内容是满足下面条件时:输入4-10的数字,页面会跳转到QQ注册(https://ssl.zc.qq.com/v3/index-chs.html ...
- python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)
昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...
- awk引用外部变量及调用系统命令方法
目标:想用awk与scp命令批量传送文件 前提:先搭好主机间的免密登陆环境(参考:http://www.cnblogs.com/tankaixiong/p/4172942.html) 实现脚本方法: ...
- bat运行时自己隐藏黑框,而不是用vbs来调用自己
//autoStart.bat @echo off if "%1" == "h" goto begin mshta vbscript:createobject( ...
- Slickflow.NET 开源工作流引擎高级开发(一) -- 流程外部事件的调用和变量存储实现
前言:流程实现基本流转功能外,通常也需要调用外部事件,用于和业务系统的交互,同时存储一些流程变量,用于追踪和记录业务数据变化对流程流转的影响. 1. 流程事件 流程执行过程中,伴随各种事件的发生,而且 ...
- 外部python脚本调用django 手动清理session
调试orm 在django项目根目录下创建文件test_orm.py,它和manage.py是同级的 import os if __name__ == "__main__": # ...
- 外部事件触发调用对象方法时this指向问题
问题如下: var obj = { name: 'dang', test:function(){ alert(this.name); } }; obj.test(); //这样是可以的 $('.box ...
- VBS 脚本调用
https://my.oschina.net/Tsybius2014/blog/602641
随机推荐
- JavaScript 属性类型(数据属性 访问器属性)
ECMA-2把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.” 严格来说,这就相当于说对象是一组没有特定顺序的值.对象的属性或方法都有一个名字,而每个名字映射到一个值.我们可以把E ...
- hadoop 常用配置项【转】
hadoop 常用配置项[转] core-site.xml name value Description fs.default.name hdfs://hadoopmaster:9000 定义 ...
- save-dev和save的区别
果你经常用NPM安装依赖包,会注意到安装包时的指令会分--save-dev和--save两种,有什么区别呢? 在项目中我们通常会有一个package.json的配置文件,用来保存项目的相关配置信息 ...
- 【界面优化】使用viewpagerindicator添加下划线滑动动画
开源代码viewpagerindicator里面没有实现tab下划线切换过程中的移动动画,都是很突兀的多个fragement之间的切换,导致用户体验略差,google了下相关问题,发现一片博文: ht ...
- 2014最热门、最具争议的10个Java话题
Java 的哪些内容已在2014年死去,Java 的哪些变更又遭到整个Java社区的竭力反对?请随我们一起来回顾在2014年这个多事之秋中Java都发生了哪些变化,以及小伙伴们都在JAXenter热烈 ...
- iOS开发中怎么样使用激光推送
1.注册激光推送的账号 ----> 创建应用 2.上传推送测试和发布的p12文件 注意密码的填写 3.下载sdk并拖进工程里 4.在build setting 搜索search 把路径改一 ...
- POJ 2305 Basic remains(进制转换)
题目链接:http://poj.org/problem?id=2305 ime Limit: 1000MS Memory Limit: 65536K Total Submissions: 5326 ...
- POJ 2068 Nim#双人dp博弈
http://poj.org/problem?id=2068 #include<iostream> #include<cstdio> #include<cstring&g ...
- Java IO 过滤流 BufferedInput/OutputStream
Java IO 过滤流 BufferedInput/OutputStream @author ixenos 概念 BufferedInput/OutputStream是实现缓存的过滤流,他们分别是Fi ...
- HDU 1240 Asteroids!(BFS)
题目链接 Problem Description You're in space.You want to get home.There are asteroids.You don't want to ...