51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1830|回复: 8
打印 上一主题 下一主题

[求助] 关于使用index的疑惑

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-7-22 17:42:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是对qtp自带的订票程序的登陆操作
SystemUtil.Run "D:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe"
Dialog("text:=Login","index:=1").WinEdit("attached text:=Agent Name:").Set "admin"
Dialog("text:=Login","index:=1").WinEdit("attached text:=Password:").SetSecure "mercury"
Dialog("text:=Login","index:=1").WinButton("text:=OK").Click

如果当前没有打开登陆窗口,上面的代码运行自然是没问题。但如果已经打开了一个登陆窗口(假设为窗口一),再运行就会出现登陆窗口二,接下来的运行结果是这样的:
用户名输入到窗口一中,密码输入到窗口二中,单击又作用在了窗口一的OK按钮上,所以登陆不成功。为什么根据index值得到的窗口总是在变化呢?我之前对index的理解是按照对象出现的顺序进行编号,但现在看来错了。那index值是怎么指定的?

我翻到了这个帖子
http://bbs.51testing.com/viewthr ... p;extra=&page=1
楼主说,QTP对对象的INDEX的标示,会因为对象的变动而变动着。这种变动指的是什么?输入了用户名也会引起Login对象的变化吗
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-7-22 17:49:44 | 只看该作者
应该在最开始的地方加一个判断,如果存在就不要在打开新的登陆窗了
或者如果存在,关闭已经存在的,在重新打开一个
有两个一样的窗口,出现问题就很正常了。

有点答非所问了。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-7-22 17:58:06 | 只看该作者
打开2个登录框之后,你用ChildObjects方法查看一下,Dialog对象的个数,然后用fOR 循环,动态改变Index的值
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-7-22 21:51:08 | 只看该作者
最近感觉比较多人问index的问题,就写了篇总结,去看看吧,理解了我总结的,我相信这个问题你就有答案了.
http://www.51testing.com/index.p ... space-itemid-141449
回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2015-3-12 14:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
    发表于 2009-7-23 09:55:21 | 只看该作者
    index是从0开始编号的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2009-7-23 10:00:22 | 只看该作者
    为什么不用name呢

    index简单来说就是同一个对象在一个页面里出现的顺序位置

    版本变更时 经常会因为多了一个控件或者少了一个控件引起index变化 而name一般不会变化
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2015-3-12 14:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    7#
    发表于 2009-7-23 10:34:46 | 只看该作者

    回复 6# 的帖子

    因为两个对象的属性完全相同,所以需要用到index
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2009-7-23 11:05:51 | 只看该作者

    窗口激活后,index=0

    如果当前没有打开登陆窗口,上面的代码运行自然是没问题。
    '没问题是因为index是个辅助的属性,只有当对象不唯一时才有用,其实这个时候index=0。你写index=10000也没问题。

    但如果已经打开了一个登陆窗口(假设为窗口一),
    '窗口1的index=0

    再运行就会出现登陆窗口二,接下来的运行结果是这样的:
    '窗口2激活,index=0,原窗口1的index=1.

    用户名输入到窗口一中,
    '窗口1激活,index=0,窗口2的index=1

    密码输入到窗口二中,单击又作用在了窗口一的OK按钮上,所以登陆不成功。
    '同上
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2009-7-23 17:18:53 | 只看该作者
    这个例子本身其实没有什么意义,因为在学习描述性编程,看到关于index的介绍,就做了个实验,发现结果和预期的不一样。但我想实际测试当中也有可能出现两个完全相同的对象吧。

    回复intothestorm:
    也就是说不管任何时候,当前被激活的对象的Index都是0?然后其他对象的index值是按上次操作的顺序,比如刚才操作过的那个是1,再往前的就是2?

    回复dreamsea123,onlonely:
    你们提出的childobjects方法我也会试试。多谢啦!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-27 12:58 , Processed in 0.082449 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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