51Testing丛书连载:(四十七)精通QTP——自动化测试技术领航

发表于:2012-2-16 13:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:余杰 赵旭斌    来源:51Testing软件测试网

分享:

  重点解析:

  通过在Excel中写脚本让QTP调用,实际上此功能有点类似于在Visual Studio中开发相应的库之后生成DLL,供QTP进行调用。当然Excel的宏虽然没有Visual Studio那么强大,但是应对自动化测试也已经绰绰有余了。但是为什么这里还要另外提出来呢,既然有了Visual Studio开发DLL库,那此方法不是就变得多余了吗?说到这里,我想有过调用DLL经验的QTP自动化测试人员应该知道,每个需要调用的DLL在使用之前都是需要进行注册(除了在生成DLL的本机上),同样在Excel中会发现,它不需要注册,也不需要任何的其他预备操作即可进行直接使用(相信大多测试机上是安装Office的),并且它还有一个更加强大的优势:动态地生成宏,并利用QTP进行调用,而DLL这样的加密文件是不可能做到的。既然是动态生成,那么不止是宏代码,甚至是Excel同样也需要动态,这样才是真正的动态,实现思路就是新建一个Excel和WorkBook,动态加载宏后,运行宏的函数库中的方法后,不留任何痕迹的情况下关闭Excel,最终达到全部动态生成的效果。接下来看一下如何才能实现动态方式。

  1.字符串加载方式

  打开QTP,并在其编辑区输入如下脚本:

'创建EOM对象

Set eom = CreateObject("excel.application")

'打开D盘中的1.xls文件

Set oWorkbook = eom.Workbooks.Add

'进入到宏编辑区并获取到WorkBook的脚本模块对象

Set oModule = oWorkbook.VBProject.VBComponents.Item("ThisWorkbook")

'定义动态脚本

Dim newCode

'所有脚本内容

newCode = "Function tt()" +vbNewLine

newCode = newCode + "msgbox ""test"""+ vbNewLine

newCode = newCode + "End Function"+ vbNewLine

'加载脚本

oModule.CodeModule.AddFromString newCode

'执行脚本

oWorkbook.tt

'关闭WorkBook,此处false代表不保存直接关闭

oWorkbook.Close false

'退出Excel应用

eom.Quit

'释放

Set eom = Nothing

  分析:

  创建EOM对象,添加一个WorkBook,获取到VBProject下的VBComponents中WorkBook的编辑区对象,并使用codeModule对象添加需要的代码,接着就可以直接执行方法函数,最后关闭WorkBook。注意这里close方法需要添加一个false参数,否则Excel会自动跳出是否保存的界面,导致脚本执行失败,此处false代表不保存直接关闭。

  2.文本文件加载方式

  前面是通过在运行代码中写入字符串实时加载需要的函数,称为字符串加载方式,接下来介绍一种更加实用的方式—文本文件加载方式,此方式可以直接把所有的函数放在一个BAS文件中,然后直接导入到Excel宏之中并运行。

  首先需要创建一个BAS文件,此格式为Excel导出的宏文件格式。在这个BAS文件中加入需要的一些函数。此处就把前面的tt函数加入到BAS中,并且保存到D盘中,在真实项目中,建议使用相对路径,这样方便以后的移植。准备工作完成之后,就可以正式开始了。

'创建EOM对象

Set eom = CreateObject("excel.application")

'打开D盘中的1.xls文件

Set oWorkbook = eom.Workbooks.Add

'进入到宏编辑区并获取到WorkBook的脚本模块对象

Set oModule = oWorkbook.VBProject.VBComponents.Item("ThisWorkbook")

直接动态导入函数库文件

oModule.CodeModule.AddFromFile "d:\1.bas"

'执行脚本

oWorkbook.tt

'关闭WorkBook,此处false代表不保存直接关闭

oWorkbook.Close false

'退出Excel应用

eom.Quit

'释放

Set eom = Nothing

  分析:

  调用VBProject模块并导入1.bas文件后,此处需要注意,如果直接执行以上脚本,会在执行到调用VBProject这一行出错,如图3-36所示。

图3-36

32/3<123>
重磅发布,2022软件测试行业现状调查报告~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号