51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 6687|回复: 28
打印 上一主题 下一主题

[原创] 同一脚本里描述性编程对象第二次使用会报错

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-7-21 16:04:51 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").WebCheckBox("type:=checkbox", "html id:=ckb_2", "html tag:=INPUT")
我在一个脚本里两次用到下面的对象WebCheckBox,第一次使用没有问题,第二次使用会报以下错误(这个对象在两次使用的时候属性都一样,不知有没有什么好的办法解决)


The "[ WebCheckBox ]" object's description matches more than one of the objects currently displayed in your application. Add additional properties to the object description in order to uniquely identify the object.
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

29#
 楼主| 发表于 2010-7-28 17:44:06 | 只看该作者

回复 26# 的帖子

发现运行这个语句的时候,QTP会crash
回复 支持 反对

使用道具 举报

该用户从未签到

28#
发表于 2010-7-27 15:26:05 | 只看该作者
不会两个都是可见的吧,加个visible=True的属性再看看
回复 支持 反对

使用道具 举报

该用户从未签到

27#
发表于 2010-7-23 16:45:58 | 只看该作者
这应该也算解决问题了,鲜花吧
回复 支持 反对

使用道具 举报

该用户从未签到

26#
发表于 2010-7-23 13:20:35 | 只看该作者
bb.item(bb.count - 1).Set "ON"
这样应该能操作最新的那个了,试试
要是错了,item编号自己定,找个规律出来
虽然不是直接识别,不过有时候也只有这样了,checkbox是个很麻烦的东西
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2010-7-23 11:14:20 | 只看该作者

回复 24# 的帖子

那就是业务上引起的原因,第一次使用后,他其实仍然保存在页面上,只是可能你看不到了,下次再使用,自然就同时出现两个了
回复 支持 反对

使用道具 举报

该用户从未签到

24#
 楼主| 发表于 2010-7-23 11:04:11 | 只看该作者

回复 22# 的帖子

我这样试了, bb。count=2,说明确实运行到这里的时候是找到了两个相同的对象了- -!
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2010-7-23 10:39:26 | 只看该作者
恩,可以这样试试,但是我看了代表,我有一个疑惑,但是也没试过,我先提出来,就是你第一段代码用的是Description.Create()的方法,而第二段直接描述了,会不会导致了这个错误的原因?QTP的机制?如果统一以后会不会真的好了?纯属猜测我描述性编程用的不多,就算用,我也非常喜欢统一,所以这只是我的遐想,怀疑
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2010-7-22 16:27:37 | 只看该作者

回复 20# 的帖子

再第2句粗体前加上下面的代码,看看到底有几个一样的控件,一点点确定问题
Set mydescription=Description.Create()
mydescription("type").value="checkbox"
mydescription("html id").value="ckb_2"
set bb = test.childobjects(mydescription)
msgbox bb.count
回复 支持 反对

使用道具 举报

该用户从未签到

21#
 楼主| 发表于 2010-7-22 11:49:44 | 只看该作者
我把一个脚本里的两个action都粘贴出来了,加粗部分就是关键的地方,
回复 支持 反对

使用道具 举报

该用户从未签到

20#
 楼主| 发表于 2010-7-22 11:47:45 | 只看该作者

回复 19# 的帖子

下面是action1 ‘ 完成copy的操作
Dim i,test,mydescription,mydescription1
wait 2
DbTable("DbTable").Output CheckPoint("DbTable")

Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").VirtualObject("object_Action_new spec").Click 49,11
Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").Frame("issueList").WebElement("Copy...").FireEvent "onmouseover"
Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").Frame("issueList").WebElement("Copy...").FireEvent "onmouseout"
Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").Frame("issueList").Link("Link").Click

Set test=Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise")
Set mydescription=Description.Create()
Set mydescription1=description.Create()
mydescription("type").value="checkbox"
mydescription("html id").value="ckb_2"
mydescription1("type").value="button"
mydescription1("class").value="btn_ok"
If  test.WebCheckBox(mydescription).GetROProperty("checked")<>"on" Then
        test.WebCheckBox(mydescription).Set "ON"                       ‘ 选择folder
End If

test.WebButton(mydescription1).Click                                 ’点击保存按钮,copy 完成
set mydescription=nothing
set mydescription1=nothing
set test=nothing



Action2       ’完成move操作
Dim test,a
wait(2)
Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").VirtualObject("object_Action_new spec").Click 51,10
Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").Frame("issueList").WebElement("Move To...").FireEvent "onmouseover"
Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").Frame("issueList").WebElement("Move To...").FireEvent "onmouseout"
Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").Frame("issueList").Link("Link").Click
Set test=Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise")

a=test.WebCheckBox("type:=checkbox", "html id:=ckb_2").GetROProperty("checked")
If  a<>"on" Then
        test.WebCheckBox("type:=checkbox", "html id:=ckb_2").Set "ON"            ‘选中和copy操作时一样的folder
End If

Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").WebButton("type:=button", "class:=btn_ok").Click    ’点击保存按钮,move完成

set test=nothing
Browser("TechExcel KnowledgeWise").Page("TechExcel KnowledgeWise").Frame("topframe").WebButton("WebButton").WaitProperty "Visible", true, 100000

[ 本帖最后由 131425god 于 2010-7-22 11:52 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

19#
发表于 2010-7-22 11:16:35 | 只看该作者

回复 18# 的帖子

那到不是一定要,呵呵,可以动态给控件加唯一属性标识的,就不用INDEX了,当然,我也没看过实际项目,所以不敢妄下定论,不过INDEX是肯定可以的,但是我觉得靠一堆数字不可靠,我习惯性的还是会考虑将来的维护阶段
回复 支持 反对

使用道具 举报

该用户从未签到

18#
发表于 2010-7-22 11:14:20 | 只看该作者
页面本来就不是死的,是会根据操作变化的

按照上面的提示,肯定是匹配了多个,加index是肯定要的,不是没办法的办法
因为动态变化的,到底是不是你需要的,你还要判断
回复 支持 反对

使用道具 举报

该用户从未签到

17#
发表于 2010-7-22 11:08:05 | 只看该作者
这个纠结的问题,我刚才请教了我的老师,他这么说:

第一次使用没问题,说明第一次的操作能识别到,而经过某些操作后,页面上对象发生变化,识别不了,应该他的操作步骤引起的
让他把完整脚本贴上来
提供信息太少了



然后,他也觉得INDEX是没有办法的办法,呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

16#
发表于 2010-7-22 11:05:03 | 只看该作者
恩,是的,也有可能,那如果这样的话,INDEX就能用了,不过我在自动化的实施中,一般不到逼不得已,不喜欢用INDEX,我总觉得不可靠,呵呵,可能是个人习惯吧
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2010-7-22 11:02:35 | 只看该作者

回复 13# 的帖子

可能只是隐藏了第1个,出现了第2个而已,index还是会变的,表面看是一个
分析JS的操作就明白了
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2010-7-22 10:59:41 | 只看该作者
看来我要请教我师父去了,哈哈
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2010-7-22 10:59:31 | 只看该作者
不过根据刚才这个朋友给我的短信,他说,他两次用的是同一个控件。。。就不存在INDEX的区分啊
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-7-21 17:37:11 | 只看该作者
是有的,仔细看一下
加上试试实际效果,值是从0开始一直向上+1的
index:=0
index:=1
index:=2
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2010-7-21 17:16:41 | 只看该作者

回复 10# 的帖子

可是我在对象库里看了下对象WebCheckBox,没发现有这个index属性- -!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-13 23:02 , Processed in 0.079587 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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