51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 4121|回复: 16
打印 上一主题 下一主题

[原创] QTP 调用function的改写

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-12-13 18:12:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 1316016 于 2010-12-17 11:13 编辑

一般情况下,如果某function不存在,QTP则会直接报错并终止操作。

QTP是否有开接口,重写此操作呢? 如果function不存在,则将function所在的vbs自动加载,然后再次判断是否存在? function名和vbs名字和路径的关联,是已经准备好的..
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-12-14 10:32:44 | 只看该作者
??
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2010-12-16 18:08:04 | 只看该作者
这个..没有吗?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-12-17 11:13:40 | 只看该作者
这个没有人遇到吗
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-12-17 15:00:26 | 只看该作者
override QTP肯定是不支持的 可以考虑用出错处理来实现 即当出错时就进行加在VBS文件 只是思路 QTP好久不用 可行性不知
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-12-21 14:36:11 | 只看该作者
出错处理? 可以捕获到这个异常吗? 然后想recovery一样做吗?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-12-30 13:57:58 | 只看该作者
???
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-12-31 10:44:21 | 只看该作者
lz的想法很有趣啊,就算是能改写,那也要加载该改写的代码吧,function你都懒得去加载,何况是还要额外加载个重写的代码
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-12-31 10:47:10 | 只看该作者
正如LS所说,LZ的思路确实有点怪 你为何不一次性全部加载所要的类库呢?
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-12-31 23:36:36 | 只看该作者
Dim QTPQTPApplicationlication
Set QTPApplication = CreateObject("QuickTest.QTPApplicationlication")
QTPApplication.Launch
QTPApplication.Visible = True

With QTPApplication.Test.Settings
        .Launchers("Web").CloseOnExit = True
        .Launchers("Windows QTPApplicationlications").Active = False
        .Launchers("Windows QTPApplicationlications").QTPApplicationlications.RemoveAll
        .Launchers("Windows QTPApplicationlications").RecordOnQTDescendants = False
        .Launchers("Windows QTPApplicationlications").RecordOnExplorerDescendants = False
        .Launchers("Windows QTPApplicationlications").RecordOnSpecifiedQTPApplicationlications = False

        With .Run
                .IterationMode = "rngAll"
                .StartIteration = 1
                .EndIteration = 1
                .ObjectSyncTimeOut = 30000
                .DisableSmartIdentification = True
                .OnError = "Stop"
        End With

        With .Resources
                .DataTablePath = "<Default>"
                .Libraries.RemoveAll
                .Libraries.Add("E:\MyATProjects\System_001\Function\fileOper.vbs")
                .Libraries.Add("E:\MyATProjects\System_001\Function\ErrorHandle.vbs")
                .Libraries.Add("E:\MyATProjects\System_001\Function\qc_field_modify_test.vbs")
        End With
End With

QTPApplication.Test.Environment.LoadFromFile "E:\MyATProjects\System_001\Environment\MyEnv.xml"
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2011-1-6 11:03:35 | 只看该作者
正如LS所说,LZ的思路确实有点怪 你为何不一次性全部加载所要的类库呢?
lantianwei 发表于 2010-12-31 10:47



   我们当前的操作方式就是一次性导入所有的vbs在QTP9.2中,vbs和函数很多,升级到QTP10后,如果继续全部导入的化,QTP性能很慢,运行好久,甚至卡死....

是不是QTP 10的树形结构很耗内存?是否有其他配置修改?
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2011-1-6 11:19:13 | 只看该作者
你这种可以实现,但是没必要判断function的存在,将方法和文件名保存然后实现动态加载想要的就行了
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2011-1-6 16:28:13 | 只看该作者
可以利用函数指针字符化函数名并结合wugecat说的方法即可解决问题
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2011-5-6 18:03:51 | 只看该作者
函数指针字符化函数名? 这个vbs也可以吗? 有代码吗?
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2011-12-28 16:19:24 | 只看该作者
强烈关注此贴。
我也有类似需求,希望将vbs中的函数名称和参数写到EXCEL中,在用excle做案例的时候使用做校验函数名称的有效性。
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2011-12-28 16:19:38 | 只看该作者
强烈关注此贴。
我也有类似需求,希望将vbs中的函数名称和参数写到EXCEL中,在用excle做案例的时候使用做校验函数名称的有效性。
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2012-1-10 21:16:27 | 只看该作者
强烈关注此贴。
我也有类似需求,希望将vbs中的函数名称和参数写到EXCEL中,在用excle做案例的时候使用做校 ...
zzcheng0414 发表于 2011-12-28 16:19


你的需求用 动态执行 可以解决。

好像是 Execute 关键字。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-6 08:24 , Processed in 0.118064 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表