51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8830|回复: 27
打印 上一主题 下一主题

[原创] 觉得 QTP 的 Exist 方法不好用的人进来,有解决方案了(只适合高手)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-3-2 11:58:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家在用 QTP 的时候是不是感觉用 Exist 方法在判断窗体是否存在时运行很慢,因为需要等待若干秒,这种情况感觉很不爽,昨天在整理 sincky 教的脚本时突然发现了一个好用的函数就是 FindWindow,这个函数的原型如下

HWND FindWindow(  LPCTSTR lpClassName, // class name
                              LPCTSTR lpWindowName // window name);

第一个参数是窗口的类名,第二个参数是窗口的标题名称,通常我们都知道窗口的标题,即第二个参数,但是不知道第一个参数,但是我发现了一个很好用的工具就是 SPY++,用它可以获得窗口的类名

如果找到所想要的窗口,此函数的返回值是该窗口的句柄,否则返回 0
于是我们只要判断此函数的返回值是否等于 0 就行了,在 QTP 中只要加入一下代码,就可以调用该函数了

Extern.Declare micHwnd,"FindWindow","user32","",micString,micString

这样执行效率高多了,这里我只是提供了一种想法,也亲手测试过了,如果高手觉得不好,请指明,谢谢

[ 本帖最后由 intothehit 于 2007-3-2 16:13 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-3-2 13:02:56 | 只看该作者
支持一下
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-3-2 17:41:35 | 只看该作者
恩,支持一下.
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-3-2 17:47:42 | 只看该作者
多谢分享
up
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-3-3 05:05:10 | 只看该作者
测web的时候exist不好用怎么办?
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2007-3-4 16:40:21 | 只看该作者
这个是判断窗体,button怎么办?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2007-3-5 11:17:48 | 只看该作者
QTP 的spy也可以看到class name的。和Spy++的效果一样
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2007-3-5 11:35:33 | 只看该作者
原帖由 michaelyung 于 2007-3-5 11:17 发表
QTP 的spy也可以看到class name的。和Spy++的效果一样


这个我也考虑过,但是毕竟调用的是 WIN api,所以还是用 MS 的工具比较保险
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2007-3-5 13:17:50 | 只看该作者
原帖由 intothehit 于 2007-3-5 11:35 发表


这个我也考虑过,但是毕竟调用的是 WIN api,所以还是用 MS 的工具比较保险


如果同类窗口,又同名呢?
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2007-3-5 14:07:12 | 只看该作者
这个帖子适合高手,未免免为其难
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2007-3-5 15:54:27 | 只看该作者
原帖由 重新开赌 于 2007-3-5 14:07 发表
这个帖子适合高手,未免免为其难


我已经不止一次地听到这种意见了,提这种意见的人说明他还是个测试新手,你没看到大家提了很多问题吗,这说明调用 Windows api 是带有隐患的(如果你不知道是什么隐患的话,说明你还是个菜鸟)且具有局限性的,函数虽然简单,但是只有经验丰富的人才能把握好尺度(什么时候该用,什么时候不用),对于初学者和对编程理解不深以及缺少测试经验的人来说还是不用为妙

[ 本帖最后由 intothehit 于 2007-3-5 16:20 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2007-3-6 17:38:40 | 只看该作者
exist慢?
当你要判断的object不存在时,它会等待,等待时间由一个同步时间(testing->run里面,默认好像是20s)控制,觉得慢可以调整这个时间。
当然,要考虑其他语句对这个时间的要求。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2007-3-8 13:23:35 | 只看该作者
sdlkfj2
回复 支持 反对

使用道具 举报

该用户从未签到

14#
 楼主| 发表于 2007-3-8 19:01:49 | 只看该作者
原帖由 HenryKing 于 2007-3-6 17:38 发表
exist慢?
当你要判断的object不存在时,它会等待,等待时间由一个同步时间(testing->run里面,默认好像是20s)控制,觉得慢可以调整这个时间。
当然,要考虑其他语句对这个时间的要求。



我用的是 QTP 9.0 ,没找到你说的这个选项,请指明
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2007-3-9 17:14:03 | 只看该作者
原帖由 intothehit 于 2007-3-5 15:54 发表


我已经不止一次地听到这种意见了,提这种意见的人说明他还是个测试新手,你没看到大家提了很多问题吗,这说明调用 Windows api 是带有隐患的(如果你不知道是什么隐患的话,说明你还是个菜鸟)且具有局限性 ...



呵呵,你对API掌握了解多少?高手从来不说自己是高手,懂么?我虽然不是高手,但是就怎么VB Script简单调用windows api 函数,也叫高手,你未必太小看测试人员,要么就是太高估自己了。
回复 支持 反对

使用道具 举报

该用户从未签到

16#
 楼主| 发表于 2007-3-9 19:10:13 | 只看该作者
原帖由 重新开赌 于 2007-3-9 17:14 发表



呵呵,你对API掌握了解多少?高手从来不说自己是高手,懂么?我虽然不是高手,但是就怎么VB Script简单调用windows api 函数,也叫高手,你未必太小看测试人员,要么就是太高估自己了。



你咋不明白我的意思呢,我不是说会掉用 API 就是高手,我是说在自动化测试中使用 API 是有风险的,初学者或经验不多的人使用的话会给测试脚本本身带来缺陷,至少我是发现了一些.
PS:请你提一些有建设性的意见,不要老是捣乱
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2007-4-16 23:24:02 | 只看该作者
.................说实话,感觉你这样还没EXIST好用。。
EXIST就判断对象不存在的时候慢点但绝对放心可用。。。
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2007-4-17 09:09:07 | 只看该作者
给Exist加个等待参数不就可以拉吗
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2007-4-17 12:02:03 | 只看该作者
exist 可是设置等待时间的阿~~ 默认的等待时间在qtp中也可以设置的。不过楼主的方法也值得学习
回复 支持 反对

使用道具 举报

该用户从未签到

20#
发表于 2007-4-17 12:40:59 | 只看该作者
这个世界没有高手和新手 只要你喜欢
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-26 20:52 , Processed in 0.084197 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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