一.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的调用的更多相关文章

  1. QTP学习一添加默认的注释及调用外部vbs文件

    一.添加默认注释 1.新建一个TXT文档,将要添加的注释写在文档中 2.再将文档名改为:ActionTemplate.mst 3.将文件放到QTP安装目录(默认为:C:\Program Files\H ...

  2. Axure文本框验证和外部url的调用

    文本框的验证和外部url的调用: 场景: 当输入文本框中的内容是满足下面条件时:输入4-10的数字,页面会跳转到QQ注册(https://ssl.zc.qq.com/v3/index-chs.html ...

  3. python 全栈开发,Day94(Promise,箭头函数,Django REST framework,生成json数据三种方式,serializers,Postman使用,外部python脚本调用django)

    昨日内容回顾 1. 内容回顾 1. VueX VueX分三部分 1. state 2. mutations 3. actions 存放数据 修改数据的唯一方式 异步操作 修改state中数据的步骤: ...

  4. awk引用外部变量及调用系统命令方法

    目标:想用awk与scp命令批量传送文件 前提:先搭好主机间的免密登陆环境(参考:http://www.cnblogs.com/tankaixiong/p/4172942.html) 实现脚本方法: ...

  5. bat运行时自己隐藏黑框,而不是用vbs来调用自己

    //autoStart.bat @echo off if "%1" == "h" goto begin mshta vbscript:createobject( ...

  6. Slickflow.NET 开源工作流引擎高级开发(一) -- 流程外部事件的调用和变量存储实现

    前言:流程实现基本流转功能外,通常也需要调用外部事件,用于和业务系统的交互,同时存储一些流程变量,用于追踪和记录业务数据变化对流程流转的影响. 1. 流程事件 流程执行过程中,伴随各种事件的发生,而且 ...

  7. 外部python脚本调用django 手动清理session

    调试orm 在django项目根目录下创建文件test_orm.py,它和manage.py是同级的 import os if __name__ == "__main__": # ...

  8. 外部事件触发调用对象方法时this指向问题

    问题如下: var obj = { name: 'dang', test:function(){ alert(this.name); } }; obj.test(); //这样是可以的 $('.box ...

  9. VBS 脚本调用

    https://my.oschina.net/Tsybius2014/blog/602641

随机推荐

  1. 【Python之路】第十一篇--CSS

    css CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离. 一.css的四种引入方式 1.行内式 行内式是在标记的 ...

  2. windows和Ubuntu双系统的安装和基本操作

    因为最近刚开始学习ubuntu系统,首先要安装系统,搜集了网上的资料觉得这篇博客特别有用  http://www.cnblogs.com/Duane/p/5424218.html,我也是按照里面的步骤 ...

  3. geekNews 学习总结

    1:下移隐藏,上移出现 //android.support.v4.widget.NestedScrollView nsvScroller; //FrameLayout llDetailBottom; ...

  4. UITextField(一)监听输入内容的变化(开发笔记)

    //添加事件UIControlEventEditingChanged [textField addTarget:self action:@selector(textFieldDidChange:) f ...

  5. 打开新世界的第一步:学习servlet

    什么是servlet? 是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容. 创建servlet 一.创建一个web project 1)流程:eclipse-F ...

  6. jQuery获取当前对象标签名称

    获取当前对象标签名称 $(".classname")[0].tagName;

  7. 如何区分javascript中的方法(method)、函数(function)、事件(event)三个概念?

    方法是程序对某操作的处理,比如show(),你可以在触发单击事件的时候调用show(),也可以在双击的时候调用. 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块.比如自己写的倒计时函数,触 ...

  8. scrapy 知乎的模拟登陆及抓取用户数据

    最近看了python的scrapy 框架并用其抓取了部分知乎用户数据,代码主要是集中在知乎登陆和抓取时候的逻辑处理上. 1. 首先进入知乎登陆页面zhihu.com/#sigin上, 用xpath提取 ...

  9. 在Wamp 添加站点和域名

    在httpd.conf中使Include conf/extra/httpd-vhosts.conf生效 在conf/extra/httpd-vhosts.conf中加入如下代码 <Virtual ...

  10. hdu_5889_Barricade(最小割+最短路)

    题目链接:hdu_5889_Barricade 题意: 有n个点,m条边,每个边的长度都为1,每个边有一个消耗w,如果要阻断这条路,那么就会消耗w,现在让你阻断点1到点n的所有最短路,问你最小的消耗是 ...