dottree 发表于 2008-9-1 18:27:49

QTP如何区分先后打开的多个相同的窗口

识别属性值都相同的窗口,其实很多人都已经知道,在这种情况下可以用index来区分两个对象。但是在工作过程中,发现有时候QTP并不能正确的判断到底哪个是index=0,哪个是index=1... 当我要去找index=1的窗口中的对象时,它一直去index=0的窗口中找。 为此困惑很久, 后来终于找到解决方法, 在此共享给遇到同样问题的人。Set winArr = Desktop.ChildObjects("title:=mywin")
openedWinAmount = Ubound(winArr)       
SystemUtil.Run "C:\Program Files\mywin.exe","open"       
For iWin=0 To openedWinAmount-1 'Here: Activate前面已经打开的所有窗口
        JavaWindow("toolkit class:=org.eclipse.swt.widgets.Shell", "Index:="&iWin).Activate
Next从脚本中可以看到,如果你要在新窗口中做一些操作的话,必须把已经打开的窗口重新Activate一遍,虽然不知道原因,至少解决了问题。

hsjzfling 发表于 2008-9-2 10:20:59

这个问题有更简单的解决方法~

多次尝试发现,这种问题是由于默认启用了智能识别导致的。
因此,只需要在Object Identification中,将Browser对象的Enable Smart Identification勾去掉,就不会再遇到QTP不能正确通过CreationTime或者Index来识别Browser的问题。

dottree 发表于 2008-9-2 11:04:33

谢谢 hsjzfling 的解决方法, 等下去试试看。

lingxin5013 发表于 2008-9-2 11:48:30

把Enable Smart Identification是可以解决但是你会发现你运行其它的脚本下就会出错应为你把智能识别去掉了.不好不好!

hsjzfling 发表于 2008-9-2 12:02:30

顺便提一下,如果没有特别的需要,建议将所有的智能识别关掉。

友情提示,Object Identification中的设置是对所有脚本都生效的。而在File->Settings->Run中的Disable Smart Identification...是只对当前Test有效,同样也可以在对象库中对某个指定的对象禁用智能识别。

hsjzfling 发表于 2008-9-2 12:06:51

原帖由 lingxin5013 于 2008-9-2 11:48 发表 http://bbs.51testing.com/images/common/back.gif
把Enable Smart Identification是可以解决但是你会发现你运行其它的脚本下就会出错应为你把智能识别去掉了.不好不好!

智能识别会在对象不能完全匹配时把一个相似的对象作为你的测试对象来进行操作,换句话说就是你原定义的测试对象它根本就没找到,这样可是会漏掉bug的。

自动化测试并不是以完整跑完脚本为目的的。
页: [1]
查看完整版本: QTP如何区分先后打开的多个相同的窗口