arthas.gong 发表于 2011-4-9 16:23:51

小弟刚学QTP不久,遇到一个类型不匹配的问题,希望各位大侠还有zzbbxx112帮忙求解

最近在学习QTP的封装,从zzxxbb112的一篇文章http://www.51testing.com/html/16/n-197416-2.html 中学习经验。遇到了一个问题:
我在自己创建了一个LoginStuff类,然后通过该类中的方法CreateLogin()来创建一个LoginStuff对象实例,以便在QTP运行时提供使用。如下:
Public Function CreateLogin()
'                Dim objLogin
                Set objLogin=New LoginStuff
                Set CreateLogin= objLogin
        End Function

然后将包含此代码的.vbs文件加载到QTP中,接着在QTP专家视图中写如下代码:
Call do_login()

Public Function do_login()
        Dim intStatus, objLogin
        Set objLogin=CreateLogin()
        If objLogin.Init() Then
                objLogin.CreateIns()
        End If       
End Function

然后运行QTP,当运行到Set objLogin=CreateLogin()的时候,会报错,类型不匹配: 'CreateLogin' Line (5): "Set objLogin=CreateLogin()".按我的理解do_login()方法中的objLogin应该是一个空对象(或者是个objcet类型的对象),那么Set objLogin=CreateLogin(),是不是要将objLogin强制转换类型成LoginStuff类型呢?这个问题小弟实在无法解决,请各位能帮帮我,不胜感激。
如图:

附上自己写的LoginStuff.vbs文件,这样也许能让大家更清楚些。

arthas.gong 发表于 2011-4-9 17:05:02

如果我把所有的vbs文件中的类全部粘贴到专家视图中,再运行的话,就会报错“变量未定义: 'CreateLogin'”,也就是说CreateLogin()方法是没有被正确调用。可是,我实在不知道该如何去正确调用这个CreateLogin()方法了。

arthas.gong 发表于 2011-4-9 17:39:52

我找到原因了,我把CreateLogin()方法放进了LoginStuff类里面,如果把它拿到类外面来,貌似就能运行了,但不知道为什么可以这样做?

lanchozxd 发表于 2011-4-11 09:26:45

你要先实例化类

hsjzfling 发表于 2011-4-11 13:25:46

建议LZ先阅读下QTP帮助文档中VBS部分关于class的介绍,了解下使用class的各种语法.
另外新手学习的侧重点建议先放在能让一个脚本稳定完成测试任务上,完成这一步然后再去学习各种结构.
前者是用QTP工作所必须的,后者是可选的

arthas.gong 发表于 2011-4-11 16:23:20

回复 5# hsjzfling
好的,谢谢你的建议!
页: [1]
查看完整版本: 小弟刚学QTP不久,遇到一个类型不匹配的问题,希望各位大侠还有zzbbxx112帮忙求解