一个VBS脚本调用另一个VBS脚本
写一个脚本列如dim str
str="asfasfasdfasdf"
call sub_output(str)
public sub sub_output(str)
MsgBox(str)
end sub
保存,"E\aaa.vbs"
打开另一个脚本,
set a=createobject("wscript.shell")
a.run "E\aaa.vbs"
运行这个脚本就可以输出"asfasfasdfasdf"
现在,我想知道:
假如写一个脚本列如
public sub sub_output(str)
MsgBox(str)
end sub
保存,"E\aaa.vbs"
当然也可以写成一个类
class classA
public sub sub_output(str)
MsgBox(str)
end sub
end class
怎么才能实现在另一个脚本里调用它,比如这样
set a=new classA
str1="asdfasf"
a.sub_output(str1)
在vbs里面可以实现吗,怎么实现?请解答!
(网上没找到,寄希望于此了) :(
如果你想写成一个类的方法,那么你必须先把这个VBS加载进QTP中。
加载有很多种方法。 原帖由 假装不在 于 2008-4-25 17:50 发表 http://bbs.51testing.com/images/common/back.gif
:(
如果你想写成一个类的方法,那么你必须先把这个VBS加载进QTP中。
加载有很多种方法。
你没有明白我的意思.我的意思就是一个VBS脚本调用另一个VBS脚本.不是在QTP里调用VBS脚本.
我知道可以写一些共通的功能函数,在TestSetting的Resources里载入,那么在QTP里录制脚本的时候就可以直接调用了.
我的意思就是:
像C或C++里面那样,#include "XXXXXXXXX"
那么在当前的代码里面就可以调用XXXXXXXXX里的东西了.在VBS里面可不可以这样调用?
用 set a=createobject("wscript.shell")
a.run "XXXX.vbs"
这不是调用,这是运行XXXX.vbs,这样根本无法实现值的传递的(除非先将值写入文件,再在被运行脚本里读文件) 为什么需要两个VBS文件? 把所有的内容都写在一个 VBS文件里面不就好了? 原帖由 walker1020 于 2008-4-25 23:10 发表 http://bbs.51testing.com/images/common/back.gif
为什么需要两个VBS文件? 把所有的内容都写在一个 VBS文件里面不就好了?
就像为什么要多个Action,多个Test一样~ 原帖由 ham301 于 2008-4-25 18:12 发表 http://bbs.51testing.com/images/common/back.gif
你没有明白我的意思.我的意思就是一个VBS脚本调用另一个VBS脚本.不是在QTP里调用VBS脚本.
我知道可以写一些共通的功能函数,在TestSetting的Resources里载入,那么在QTP里录制脚本的时候就可以直接调用了.
我的意思 ...
不是我没明白,是你没明白。
我说的多种加载方法,它包含了前台加载和语句的加载方法,前台加载的和你说的一样,如果函数加载的,可以这么写:
ExecuteFile ".....vbs"
放心的用吧。这种方法,建议每次函数调用别太多,因为他都会去编译它,虽然写错了也不会报错(不和直接加载一样,会先编译一次。),但如果函数量太多,它就会停在那里数秒不动。到了工程后期,这个东西停在那里会直到超时。谢谢。:( 原帖由 假装不在 于 2008-4-26 02:54 发表 http://bbs.51testing.com/images/common/back.gif
不是我没明白,是你没明白。
我说的多种加载方法,它包含了前台加载和语句的加载方法,前台加载的和你说的一样,如果函数加载的,可以这么写:
ExecuteFile ".....vbs"
放心的用吧。这种方法,建议每次函数 ...
还是你没明白。。。
VBS中是没有ExecuteFile函数的,这个是QTP定义的函数,只能通过QTP来运行。
LZ要问的是在不运行QTP的时候,如何在一个VBS中"Include"另一个VBS文件
PS:事实上,前天我也问了不少朋友这个问题未果,不料昨天也有人提问相同的问题。。。相信肯定有解决方法,就像QTP提供的ExecuteFile~~ :(
这么说,这个函数也只是在QTP中运行才有效?
但我是写了一个VBS在负责管理和导入所有函数的。因此每次只要写导入这条,其他函数就都可以用了。
我觉得楼主在QTP板块问的,应该是在QTP运行时候的。哈哈 原帖由 walker1020 于 2008-4-25 23:10 发表 http://bbs.51testing.com/images/common/back.gif
为什么需要两个VBS文件? 把所有的内容都写在一个 VBS文件里面不就好了?
如果在一个VBS里面写个好几百行,那看起来就行不方便。要是能够按功能之类的划分,再在文件之间调用,那看起来就比较清晰了。 :( 我说哪么多,你还没说谢谢呢。 原帖由 假装不在 于 2008-4-26 17:02 发表 http://bbs.51testing.com/images/common/back.gif
:( 我说哪么多,你还没说谢谢呢。
可是我的问题还没有解决啊。
我送了你一朵小花没看到吗,太伤心了 原帖由 ham301 于 2008-4-26 18:20 发表 http://bbs.51testing.com/images/common/back.gif
可是我的问题还没有解决啊。
我送了你一朵小花没看到吗,太伤心了
偏心啊~~:@ 原帖由 hsjzfling 于 2008-4-26 20:01 发表 http://bbs.51testing.com/images/common/back.gif
偏心啊~~:@
羡慕不来D 看来需要写成WSC,例如:
<?xml version="1.0"?>
<component>
<?component error="true" debug="true"?>
<reference object="Scripting.Dictionary" />
<registration description="Functions" progid="MyProg" version="1.00" classid="{d7c40957-00d4-41a5-a87b-89d1db311425}">
</registration>
<public>
<property name="pID" get = "GetID" put = "SetID"/>
<method name="SetID" internalName="SetID" dispid="0">
<parameter name="sValue"/>
</method>
<method name="GetID">
</method>
<method name="PrintMessage">
<parameter name="strMessage"/>
</method>
</public>
<script language = "VBScript">
<![CDATA[
Dim pID
Function GetID()
GetID = pID
End Function
Function SetID(sValue)
pID = sValue
End Function
Function PrintMessage(strMessage)
Msgbox strMessage
End Function
]]>
</script>
</component>
保存成WSC文件,例如WSCTest1.wsc,然后右键选择文件,注册后就可在另外一个VBS文件中用如下方式访问其中的类:
Set test=CreateObject("MyProg")
test.PrintMessage("Hello!") 首先,谢谢,这样的确解决了。可是总觉的应该有比较简单直接的方法,上面只是在WSC中嵌入了VBscript脚本! 这里有一篇文章写得比较全面,可以参考一下。
http://hi.baidu.com/myvbscript/blog/item/3a100e17476e83014b90a7be.html 原帖由 gy21st 于 2008-4-28 16:31 发表 http://bbs.51testing.com/images/common/back.gif
这里有一篇文章写得比较全面,可以参考一下。
http://hi.baidu.com/myvbscript/blog/item/3a100e17476e83014b90a7be.html
之前找了很久vbs文件互相调用的方法,都没找到。到后来还是使用了QTP的ExecuteFile函数才解决的。看了这个帖子后,才发现原来有这么多方式。 相当不错,学习了~~:) 看来除了ExecuteFile函数后,还有另外一个方式调用VBS file,学习了。 恩,学习到非常有用的东西,非常感谢!
页:
[1]
2