51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3162|回复: 5
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-9-1 18:27:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
识别属性值都相同的窗口,其实很多人都已经知道,在这种情况下可以用index来区分两个对象。但是在工作过程中,发现有时候QTP并不能正确的判断到底哪个是index=0,哪个是index=1... 当我要去找index=1的窗口中的对象时,它一直去index=0的窗口中找。 为此困惑很久, 后来终于找到解决方法, 在此共享给遇到同样问题的人。
  1. Set winArr = Desktop.ChildObjects("title:=mywin")
  2. openedWinAmount = Ubound(winArr)       
  3. SystemUtil.Run "C:\Program Files\mywin.exe","open"       
  4. For iWin=0 To openedWinAmount-1 'Here: Activate前面已经打开的所有窗口
  5.         JavaWindow("toolkit class:=org.eclipse.swt.widgets.Shell", "Index:="&iWin).Activate
  6. Next
复制代码
从脚本中可以看到,如果你要在新窗口中做一些操作的话,必须把已经打开的窗口重新Activate一遍,虽然不知道原因,至少解决了问题。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-9-2 10:20:59 | 只看该作者
这个问题有更简单的解决方法~

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

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2008-9-2 11:04:33 | 只看该作者
谢谢 hsjzfling 的解决方法, 等下去试试看。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-9-2 11:48:30 | 只看该作者
把Enable Smart Identification是可以解决但是你会发现你运行其它的脚本下就会出错应为你把智能识别去掉了.不好不好!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2008-9-2 12:02:30 | 只看该作者
顺便提一下,如果没有特别的需要,建议将所有的智能识别关掉。

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

使用道具 举报

该用户从未签到

6#
发表于 2008-9-2 12:06:51 | 只看该作者
原帖由 lingxin5013 于 2008-9-2 11:48 发表
把Enable Smart Identification是可以解决但是你会发现你运行其它的脚本下就会出错应为你把智能识别去掉了.不好不好!


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

自动化测试并不是以完整跑完脚本为目的的。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-28 10:48 , Processed in 0.067027 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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