peterz 发表于 2009-3-10 15:42:25

QTP告别COM编程(转)

现QTP中现在已经不用使用Scripting.FileSystemObject 来进行文件的操作了,因为它引入了.net
以前用Scripting.FileSystemObject判断文件否存在:
Public function sFileExists(sFileName)
   Dim fso, msg
   Set fso = CreateObject("Scripting.FileSystemObject")
   If (fso.FileExists(sFileName)) Then
      sFileExists = true
   Else
      sFileExists = false
   End If
End Function

现在可以使用.net里的类了,方法如:


Set var_CreateInstance = DotNetFactory.CreateInstance("System.IO.File", "")
dim filepath
filepath = "E:\Excel_VBA.txt"
dim b
b= var_CreateInstance.Exists(filepath)
msgbox b

可以达到同样的效果,这样我们不需要在为脚本语言不能实现的功能而头疼了,你直接用.net里的类就可以了.
我们的做法是,把在QTP时实现比较困难的功能,先在.net下写一个针对于自动化的库,然后通过上面的做法来引用自己写的库,就可以实现很多功能...
...
...
...
有了对.net 的支持,就不会说XXX功能在QTP下无法实现,因为编程.net可以,所以QTP可以

xhhuang1618 发表于 2009-3-10 16:48:55

高手啊。
不过我一直有个疑问,使用DotNetFactory可以调用自己写好的.NET类,但是DotNetFactory.CreateInstance("System.IO.File", "")
中的参数“System.IO.File”我应该去哪里找呢?是不是有什么资料啊?

shanxi 发表于 2009-3-10 19:05:11

回复 1# 的帖子,标题不对,其实仍然是对COM的封装

感觉实际仍然是用VBScript支持的CreateObject封装完成,可以用Oleview.exe来查看本机已注册的COM对象。
把楼主的脚本头一个例子改为:
CreateObject("System.IO.File")也是能work的,解释见http://technet.microsoft.com/zh-cn/magazine/2007.01.heyscriptingguy.aspx

System.IO.File
可以用Visual studio新建C#工程,使用using System.IO.File找到。

见http://www.sqaforums.com/showflat.php?Number=372206

kakamissyou 发表于 2009-3-10 23:49:13

这不是告别,我称之为Enhancement.

这不是告别,我称之为Enhancement.

看来有此想法的不止我一个啊,同道中人!

多向你学习。

至于楼上说的研究那么细,有能力当然是好。

[ 本帖最后由 kakamissyou 于 2009-3-10 23:51 编辑 ]

peterz 发表于 2009-3-11 09:31:39

3楼正解。2楼朋友可以参考这个地址
http://msdn.microsoft.com/zh-cn/library/system.io.file(VS.80).aspx

heqingbluesky 发表于 2009-3-12 11:11:41

这个功能通过DLL文件的调用应该更好,要不然,你就要一本CSDN的作为参考了。
页: [1]
查看完整版本: QTP告别COM编程(转)