QTP中使用自定义vbs类

 发现直接在resource中加载含有calss的vbs文件,QTP无法识别类,导致脚本中无法new类对象。

  解决办法有四种:

  1、直接在action脚本中定义类,然后action中任何地方都可以实例化类

  2、用executefile引入类定义文件,然后action中任何地方都可以实例化类

  3、在function lib中定义类,并实例化类,然后再action中直接使用类实例

  4、在function lib中定义类,并定义一个实例化类的函数,然后再action中调用该函数对类进行实例化

  补充:第四种实现方法如下:

  把vbs文件加载到Resources中后,我用以下方法绕过QTP不识别导入的vbs文件中的类的问题。

  在放置class(类)的vbs文件中,放置以下函数:


------------------------------------------------------------------------------------------------------------------

'

'* 功能:由于QTP不识别导入的VBS文件中的类,因此定义此函数来返回相应的对象

'* 输入参数:className  :要建立对象的类名

'* 返回值:返回类对象

'* 编写人:  chenyb

'* 编写日期:2008-10-16

'* 其他说明:以下只是方法,根据需要再扩展

'

Public Function newClass(className)

Dim strSentence,obj

strSentence = strSentence & "set obj = New " & className '创建对象

Execute strSentence  '执行字符串语句

Set newClass = obj   '返回对象

End Function

  参考QTP下vbs伪类构造器的设计:

  有一段时间没上博客了,不过博客还是不能拖呢,每每在我快要放弃的时候总会有许多网友在告诉我该更新了,我们等着你的讲座,虽然讲座写到后来已经有些疲倦,但有了你们的支持,我还会一直继续,讲座还会一直继续。

  进入正题,今天要讲的内容与VBS类关联比较密切,在看本次讲座之前建议大家首先熟悉一下类的组成, 这样对于学习本次讲座内容会比较轻松。如果平时在自动化测试过程中经常使用类的朋友应该会清楚,在Resources中引用带有类的vbs函数库之后,是不可以直接在QTP脚本编辑器中直接进行类的初始化的。具体我们来看下例子。

  1.首先我们编写一个vbs函数库,脚本如下:


Class ExcelClass

Sub t1()

MsgBox "t1"

End Sub

Sub t2()

MsgBox "t2"

End Sub

End Class

2.在QTP的File --> Settings --> Resources中引用此函数库


  3.我们知道创建一个类的实例方法是通过以下方式来进行的

  Set 实例名 = New 类名

  此时如果直接在QTP中进行创建类的话会直接报错:

  Set eom  = new ExcelClass

  eom.t1

  4.那么对于以上这种情况,我们一般所采用的方式是在函数库中建立一个函数,让此函数返回这个类的实例化。


Class ExcelClass

Sub t1()

MsgBox "t1"

End Sub

Sub t2()

MsgBox "t2"

End Sub

End Class

'定义ExcelClass的无参构造

Function NewExcelClass

Set NewExcelClass = new ExcelClass

End Function

  5. 接着在QTP脚本编辑区中直接把这个函数返回就可以使用了


Set eom  = NewExcelClass

eom.t1

  思考:

  是否可以按照如图所示的方式把New ExcelClass作为函数名进行编写呢,这样我们就可以直接在QTP脚本区中进行new一个类出来,是不是更加直观呢,这一块我们会留到下一讲进行讲解。

  总结:

  这一讲内容比较基础,主要还是为了照顾一些新人,下一讲我们会继续深入讲解类构造器,主要会涉及到带参构造器的设计模式,请大家期待。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-01 11:37:45

QTP中使用自定义vbs类的相关文章

asp.net中C# 自定义打印类程序

 代码如下 复制代码   public class PrintInfo     {         public string PortName { get; set; }         public string DepartureTime { get; set; }         public string AMPM { get; set; }         PrintDocument document = new PrintDocument();         private in

Struts2框架,表单请求到action出错,貌似找不到自定义action类中的方法。

问题描述 Struts2框架,表单请求到action出错,貌似找不到自定义action类中的方法. 关键代码如下: ${Msg.sendUser.username } 上面代码的意思是:把${Msg.sendUser}提交到action,赋值给 action类属性message的sendUser.(sendUser数据类型是User对象) 请求后提示找不到action中的自定义方法,但是我表单中的值换成下面 的,变成赋值给message的属性sendUser的属性username,就能成功. 是

在asp中通过vbs类实现rsa加密与解密,建议入精华

加密|解密|精华 在asp中通过vbs类实现rsa加密与解密,建议入精华 本文章有两文件组成 test.asp 测试演示文件 clsrsa.asp 实现rsa加密与解密的vbs类文件下面是代码: 1. test.asp <%rem 文章标题:在asp中通过vbs类实现rsa加密与解密rem 收集整理:yanekrem 联系:aspboy@263.net %><%Option Explicit%><!--#INCLUDE FILE="clsRSA.asp"-

在asp中通过vbs类实现rsa加密与解密

加密|解密 本文章有两文件组成test.asp 测试演示文件clsrsa.asp 实现rsa加密与解密的vbs类文件下面是代码: 1. test.asp <%rem 文章标题:在asp中通过vbs类实现rsa加密与解密rem 收集整理:yanekrem 联系:aspboy@263.net %><%Option Explicit%><!--#INCLUDE FILE="clsRSA.asp"--><% Dim LngKeyEDim LngKeyD

ExtJS中如何扩展自定义的类

1/**//** 2 * ExtJs自定义PersonListGridPanel类 3 * 该类继承自GridPanel[使用Ext.extend(superClass,override Object)方法实现 继承], 4 * 并override了该类的构造函数 5 * 构造函数内部继承自 GridPanel的构造函数[apply(this,arguments)实现继承] 6 * 该类实现了 如何对外部公布一个事件 7 * 在构造函数中添加一个事件 [this.addEvents("事件名称&

flex调用webservice中的自定义类的方法

 flex如何调用webservice中的自定义类,下面有个不错的示例,不了解的朋友可以参考下 代码如下: public class ReturnResult  {  public int curIndex { get; set; }  public DataTable idxList { get; set; }  }  //测试数据库连接  [WebMethod(Description = "!!!测试数据库连接,链接字符串在web.config中")]  public bool c

class-举个在xml文件中通过全限定类名调用自定义的类的例子

问题描述 举个在xml文件中通过全限定类名调用自定义的类的例子 举个在xml文件中通过全限定类名调用自定义的view的例子 关键代码如何的,谢谢解答 解决方案 http://www.educity.cn/wenda/82552.html

【COCOS2DX(2.X)_LUA开发之三】在LUA中使用自定义精灵(LUA脚本与自创建类之间的访问)及LUA基础讲解

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/lua-game/985.html 本篇做起来比较累,大家请参考最新篇[COCOS2DX-LUA 脚本开发之四]使用tolua++编译pkg,从而创建自定义类让Lua脚本使用 此篇可能会在最新的cocos2dx版本中出现如下问题: 1 2 LUA ERROR: ...24F82-1230-41FE-8A04-C445FB7D1BAB/mtet

activity-如何在java类中访问自定义的对象?

问题描述 如何在java类中访问自定义的对象? 我想在java类中访问自定义的对象,这个java类中包括ApplicationContext 对象. 我创建了一个自定义的应用程序类: class A extends android.app.Application{ public String abc = "xyz"; } 一个简单的java类: class B { private appContext; // This constructor is called from activi