intothehit 发表于 2007-3-2 11:58:40

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

大家在用 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 编辑 ]

ebuluo 发表于 2007-3-2 13:02:56

支持一下

xiaonan 发表于 2007-3-2 17:41:35

恩,支持一下.

hiyizhiyu 发表于 2007-3-2 17:47:42

多谢分享
up

SueR 发表于 2007-3-3 05:05:10

测web的时候exist不好用怎么办?

Jimmyshao 发表于 2007-3-4 16:40:21

这个是判断窗体,button怎么办?

michaelyung 发表于 2007-3-5 11:17:48

QTP 的spy也可以看到class name的。和Spy++的效果一样

intothehit 发表于 2007-3-5 11:35:33

原帖由 michaelyung 于 2007-3-5 11:17 发表
QTP 的spy也可以看到class name的。和Spy++的效果一样

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

loho1968 发表于 2007-3-5 13:17:50

原帖由 intothehit 于 2007-3-5 11:35 发表


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

如果同类窗口,又同名呢?

重新开赌 发表于 2007-3-5 14:07:12

这个帖子适合高手,未免免为其难

intothehit 发表于 2007-3-5 15:54:27

原帖由 重新开赌 于 2007-3-5 14:07 发表
这个帖子适合高手,未免免为其难

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

[ 本帖最后由 intothehit 于 2007-3-5 16:20 编辑 ]

HenryKing 发表于 2007-3-6 17:38:40

exist慢?
当你要判断的object不存在时,它会等待,等待时间由一个同步时间(testing->run里面,默认好像是20s)控制,觉得慢可以调整这个时间。
当然,要考虑其他语句对这个时间的要求。

xiaoningln 发表于 2007-3-8 13:23:35

sdlkfj2

intothehit 发表于 2007-3-8 19:01:49

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


我用的是 QTP 9.0 ,没找到你说的这个选项,请指明

重新开赌 发表于 2007-3-9 17:14:03

原帖由 intothehit 于 2007-3-5 15:54 发表


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


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

intothehit 发表于 2007-3-9 19:10:13

原帖由 重新开赌 于 2007-3-9 17:14 发表



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


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

studping 发表于 2007-4-16 23:24:02

.................说实话,感觉你这样还没EXIST好用。。
EXIST就判断对象不存在的时候慢点但绝对放心可用。。。

刀客 发表于 2007-4-17 09:09:07

给Exist加个等待参数不就可以拉吗

danmy 发表于 2007-4-17 12:02:03

exist 可是设置等待时间的阿~~ 默认的等待时间在qtp中也可以设置的。不过楼主的方法也值得学习

厍仕杰 发表于 2007-4-17 12:40:59

这个世界没有高手和新手 只要你喜欢
页: [1] 2
查看完整版本: 觉得 QTP 的 Exist 方法不好用的人进来,有解决方案了(只适合高手)