外部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
随机推荐
- 【Python之路】第十一篇--CSS
css CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离. 一.css的四种引入方式 1.行内式 行内式是在标记的 ...
- windows和Ubuntu双系统的安装和基本操作
因为最近刚开始学习ubuntu系统,首先要安装系统,搜集了网上的资料觉得这篇博客特别有用 http://www.cnblogs.com/Duane/p/5424218.html,我也是按照里面的步骤 ...
- geekNews 学习总结
1:下移隐藏,上移出现 //android.support.v4.widget.NestedScrollView nsvScroller; //FrameLayout llDetailBottom; ...
- UITextField(一)监听输入内容的变化(开发笔记)
//添加事件UIControlEventEditingChanged [textField addTarget:self action:@selector(textFieldDidChange:) f ...
- 打开新世界的第一步:学习servlet
什么是servlet? 是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容. 创建servlet 一.创建一个web project 1)流程:eclipse-F ...
- jQuery获取当前对象标签名称
获取当前对象标签名称 $(".classname")[0].tagName;
- 如何区分javascript中的方法(method)、函数(function)、事件(event)三个概念?
方法是程序对某操作的处理,比如show(),你可以在触发单击事件的时候调用show(),也可以在双击的时候调用. 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.比如自己写的倒计时函数,触 ...
- scrapy 知乎的模拟登陆及抓取用户数据
最近看了python的scrapy 框架并用其抓取了部分知乎用户数据,代码主要是集中在知乎登陆和抓取时候的逻辑处理上. 1. 首先进入知乎登陆页面zhihu.com/#sigin上, 用xpath提取 ...
- 在Wamp 添加站点和域名
在httpd.conf中使Include conf/extra/httpd-vhosts.conf生效 在conf/extra/httpd-vhosts.conf中加入如下代码 <Virtual ...
- hdu_5889_Barricade(最小割+最短路)
题目链接:hdu_5889_Barricade 题意: 有n个点,m条边,每个边的长度都为1,每个边有一个消耗w,如果要阻断这条路,那么就会消耗w,现在让你阻断点1到点n的所有最短路,问你最小的消耗是 ...