51Testing软件测试论坛

标题: 描述性编程中使用的属性一定要是Test Object Properties吗 [打印本页]

作者: gzj_06    时间: 2007-7-19 12:28
标题: 描述性编程中使用的属性一定要是Test Object Properties吗
我的脚本中有这么一句代码:
Browser("土豆网 - 视频 - 播客 - 每个人都是生活的导演").Page("土豆网 - 视频 - 播客 - 每个人都是生活的导演").Link("innerText:=周星星求职记").Click

当脚本运行到这里时,会报错:有多个对象匹配。检查后发现页面上确实有2个名字一样的链接,于是我又增加了一个属性,修改如下:
Browser("土豆网 - 视频 - 播客 - 每个人都是生活的导演").Page("土豆网 - 视频 - 播客 - 每个人都是生活的导演").Link("innerText:=周星星求职记", "sourceIndex:=187").Click

结果仍然报同样的错,但当我把"sourceIndex:=187"改成"index:=0"后就没报错,能正常点击那个链接了,不知什么原因,想来想去,只有一个发现,那就是sourceIndex属性是Run-time Object Properties里的,而index不是

有人也许说,那你就用index不就得了嘛,问题是我不能知道这个链接的index属性究竟是多少啊,用Object Spy查看不到的

[ 本帖最后由 gzj_06 于 2007-7-19 13:30 编辑 ]
作者: zhuyuancan    时间: 2007-7-19 13:23
Link("innerText:=周星星求职记"), "sourceIndex:=187").Click
中间怎么多了个括号
作者: gzj_06    时间: 2007-7-19 13:29
原帖由 zhuyuancan 于 2007-7-19 13:23 发表
Link("innerText:=周星星求职记"), "sourceIndex:=187").Click
中间怎么多了个括号
噢,不错,那是不小心,因为代码与QTP中的不完全一样,我现在去编辑一下帖子
作者: walker1020    时间: 2007-7-19 22:48
不是很明白楼主的问题,建议楼主去仔细看一下帮助里面对描述性编程的说明
作者: gzj_06    时间: 2007-7-20 11:38
标题: 回复 #4 walker1020 的帖子
就是这句代码会报错:Browser("土豆网 - 视频 - 播客 - 每个人都是生活的导演").Page("土豆网 - 视频 - 播客 - 每个人都是生活的导演").Link("Text:=迷途").Click
报的错是:有多个对象匹配。我于是又加了个属性,修改后的代码是:Browser("土豆网 - 视频 - 播客 - 每个人都是生活的导演").Page("土豆网 - 视频 - 播客 - 每个人都是生活的导演").Link("Text:=迷途","sourceIndex:=167").Click

结果还是说有多个对象与之匹配,我的问题就是我已经增加了一个属性,就是sourceIndex,并且肯定是唯一的,为什么还是不能唯一标识这个对象呢,感兴趣的朋友可以到土豆网首页录制下脚本(www.tudou.com/index.html),但要注意,今天是“迷途”这个链接在网页上有两个,明天也许就不是的了,但找一下,肯定会有两个同名的链接的,用那个链接试一下就可以了,sourceIndex属性是用Object Spy查看到的

[ 本帖最后由 gzj_06 于 2007-7-20 11:40 编辑 ]
作者: yabest    时间: 2007-7-20 13:06
原帖由 gzj_06 于 2007-7-19 12:28 发表
我的脚本中有这么一句代码:
Browser("土豆网 - 视频 - 播客 - 每个人都是生活的导演").Page("土豆网 - 视频 - 播客 - 每个人都是生活的导演").Link("innerText:=周星星求职记").Click

当脚本运行到这里时, ...


使用描述行编程和使用对象仓库是等价的,对象仓库里属性只能用Test Object Property,描述行编程里也一样只能用Test Object Property

index是附加属性,也就是说对象本身没有这个属性,你别想用Object Spy来找到它。
index表示在所有符合条件的对象中,这个对象排第几个,所以同一个对象,在不同条件范围里的对象群中,index是不一样的!

比如窗口上有20个Button,它们的Text按顺序分别是01、02、03...19、20,
那text=13的这个button,可以用index如此标识 (index是从0开始递增)

Window("Test").Button("text:=.*", "index:=12")  //所有Button里它排第13个,所以index=12
Window("Test").Button("text:=1.*", "index:=2")  //所有1开头的Button里它排第4个,所以index=3
Window("Test").Button("text:=.*3", "index:=1")  //只有03和13两个3结尾的Button,它排第2个,所以index=1
Window("Test").Button("text:=13", "index:=0") //只有1个13Button,它排第一个,所以index=0
作者: gzj_06    时间: 2007-7-20 13:34
标题: 回复 #6 yabest 的帖子
明白了,谢谢,就是我这个问题不知怎么解决了,在Test Object Properties找不到另一个可以区分这两个链接的属性了,我想随机点击其中一个版块的某个链接,但不能肯定会在这个版块前出现同名链接,还是在这个版块之后出现,当然也可能不出现,现在问题是情况不确定,所以我不能加index:=0来区分
作者: yabest    时间: 2007-7-20 14:31
原帖由 gzj_06 于 2007-7-20 13:34 发表
明白了,谢谢,就是我这个问题不知怎么解决了,在Test Object Properties找不到另一个可以区分这两个链接的属性了,我想随机点击其中一个版块的某个链接,但不能肯定会在这个版块前出现同名链接,还是在这个版块 ...


晕,你不会循环一下,将每个对象的sourceIndex取出来判断,然后在对它进行操作?




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2