51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8825|回复: 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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

28#
发表于 2009-10-19 10:55:38 | 只看该作者
这个帖子也提供了一种解决方法,方法多了,可以选择合适自己的一种。

学习了。
回复 支持 反对

使用道具 举报

该用户从未签到

27#
发表于 2009-10-16 22:57:59 | 只看该作者
-.-! 倒是见过这种方法,但是没普及起来...技术上来讲不错,但是自动化本来成本就高~整的这么多花里胡哨的东西不好维护啊~

而且兄弟们我说咱搞技术的没那么多是是非非吧~好好的帖子搞成是非贴了...无语
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2009-10-16 16:51:11 | 只看该作者
尽量使用软件自身提供的比较好,不好用的时候自己来写
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2009-10-16 14:38:19 | 只看该作者
我也觉得QTP里面带的Exist方法有点笨笨的
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2009-10-15 20:52:08 | 只看该作者

有点水平,但感觉比较能忽悠的那种。

原帖由 intothehit 于 2007-3-9 19:10 发表



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


有点水平,但感觉比较能忽悠的那种。
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2007-4-24 10:28:40 | 只看该作者
Exist(n)里的n就是秒级的,你要不想等可以设成Exist(0)
没有觉得慢过
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2007-4-22 14:06:40 | 只看该作者
是quicktest professional help里面写错了吧,说Exist(2)带的参数是毫秒级的,于是两秒我们应该写成Exist(2000)
其实参数是秒级的,如果我们设了2000,就会等2000秒,设成2就不慢了,2秒找不到对象就自动执行下面一步了
回复 支持 反对

使用道具 举报

该用户从未签到

21#
发表于 2007-4-17 13:12:25 | 只看该作者
吼吼
回复 支持 反对

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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



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



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

使用道具 举报

该用户从未签到

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


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



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

使用道具 举报

该用户从未签到

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



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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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

使用道具 举报

该用户从未签到

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


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

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

使用道具 举报

该用户从未签到

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

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-11 08:36 , Processed in 0.089219 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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