51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

楼主: 看雪时节
打印 上一主题 下一主题

[求助] 只能识别一次的问题

[复制链接]

该用户从未签到

21#
 楼主| 发表于 2007-9-29 18:01:10 | 只看该作者
TO:jackymail
真的就只能这样了?没办法解决吗?

真的很感谢你的帮助,关注我的问题到现在!谢谢!

[ 本帖最后由 看雪时节 于 2007-9-29 18:03 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2007-9-29 18:08:43 | 只看该作者
原帖由 看雪时节 于 2007-9-29 17:53 发表
我出错的地方不是在按钮点击,而是在于第二次打开了 时间选择框 后,没法取到 当前系统年月 的innertext值,从而报错

我去这个值的目的在于:因为测试使用的的年月和当前系统年月 有可能不同,所以先做个判断。

我说错了,不是查询第2次时候按钮的属性,是查询第2次时候对话框里面年月日那个webelement的识别属性。不过估计你也作了这个步骤。
等等吧,或许有高手一点的可以解决你的问题。

不客气。
回复 支持 反对

使用道具 举报

该用户从未签到

23#
 楼主| 发表于 2007-9-29 18:16:33 | 只看该作者

回复 22# 的帖子

恐怕帖子早都沉了!唉。。。
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2007-9-30 09:25:26 | 只看该作者
你可以换一种方式取数据。用上层对象。
browser("Choose date").Page("Choose date").WebTable("<").GetCellData(1,2)


还有就是你如果有空重新检查一下我在22楼提到的问题。

我不行了。。跑了。。。呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

25#
发表于 2007-9-30 11:36:08 | 只看该作者
1. 弱弱的问一下楼主,now这个变量你有定义过么,now本身是一个函数。。。如果定义过那还是可以正常使用的~
2. 用Spy查看下那个WebElment的对象层次结构,第一是看是否有异常,第二如果存在WebTable父对象,那么可以尝试24楼的方法
3. 对WebElement("class:=title","html tag:=TD")中的描述属性再提出疑问,楼主确定这两个属性值正确并且能唯一识别出对象么?
猜测问题应该是至少由两个或两个以上因素引起,导致了QTP产生了系统错误~
回复 支持 反对

使用道具 举报

该用户从未签到

26#
 楼主| 发表于 2007-10-8 16:40:21 | 只看该作者

回复 25# 的帖子

回复你的问题:
1、now只是我在这随便展示给大家而写的
2、WebElement父对象确实是WebTable
3、虽然现在用不到这个了,但当时写的属性确实对的
回复 支持 反对

使用道具 举报

该用户从未签到

27#
 楼主| 发表于 2007-10-8 16:50:18 | 只看该作者
原帖由 jackymail 于 2007-9-30 09:25 发表
你可以换一种方式取数据。用上层对象。
browser("Choose date").Page("Choose date").WebTable("


jackymail:不知道你是否还关注啊,我现在确实是把WebTable添加到对象库了,前面所有的识别都可以,包括 当前系统时间、年 月选择,但现在唯一的问题就是 在选择具体某一天时
   Browser("B").Page("P").Frame("F").WebTable("W").ChildItem(myDayRow,myDayColumn,"WebElement",0).Click                        却提示 The test run cannot continue due to an unrecoverable error.缺少对象: 'ChildItem(...)',是因为我这个方法问题?
但同时 Browser("B").Page("P").Frame("F").WebTable("W").GetCellData(myDayRow,myDayColumn)却能得到值。

一个假期回来继续请教,知道如何解决的朋友也希望能告诉我!谢谢!~~~
回复 支持 反对

使用道具 举报

该用户从未签到

28#
发表于 2007-10-8 17:47:51 | 只看该作者
建议还是先检查下为什么会报"不可恢复的错误"提示一般这类错误产生都是在通常所注意的焦点之外的~这得根据具体代码和被测程序排查错误
回复 支持 反对

使用道具 举报

该用户从未签到

29#
 楼主| 发表于 2007-10-8 18:09:29 | 只看该作者
原帖由 hsjzfling 于 2007-10-8 17:47 发表
建议还是先检查下为什么会报"不可恢复的错误"提示一般这类错误产生都是在通常所注意的焦点之外的~这得根据具体代码和被测程序排查错误

这是整个过程的最后一步,前面类似的
Browser("B").Page("P").Frame("F").WebTable("W").ChildItem(tabRow,tabColumn,"WebElement",0).Click
都可以正确实现,但当Row>=3时就出现这个错误,你觉得问题是什么?
回复 支持 反对

使用道具 举报

该用户从未签到

30#
发表于 2007-10-8 18:35:21 | 只看该作者
那就说明在这样的情况下Row不能>=3。。。
在论坛中看就过几次都有人遇到过Unrecoverable error,都没说怎么会产生的,而我自己也一直没遇到过这样的错误。这样的情况只能逐一排除干扰情况,比如把参数化的值都替换为常数;比如再录制一个点击Row>=3的元素,比较一下和编写的代码的区别,等等。。。
如果方便的话,我们可以远程连接下,让我看看具体的环境,也许我能多帮上一点~
回复 支持 反对

使用道具 举报

该用户从未签到

31#
 楼主| 发表于 2007-10-8 18:42:55 | 只看该作者

回复 30# 的帖子

把参数化的Row,Column换成具体的数,这个我都做过了,依然会出现27#的问题
回复 支持 反对

使用道具 举报

该用户从未签到

32#
发表于 2007-10-8 19:04:59 | 只看该作者
其实我觉得就这个日历的问题而言,用ChildObjects方法可能更方便实现需求。因为每个月1号对应在Table中的Column是不一样的,但是1-30/31(可由collection.count取得)号的相对序号却是固定的,用他们的共同属性将他们筛选出来(在WebTable中还有其它WebElement干扰的情况下使用,没有就不需要这步),用index来标识区分,这样就能得到1-30/31号的每一个WebElement
比较清晰的WebTable用GetCellData方法就很方便了,至于ChildItem方法我还没怎么用过。。。还需要点时间尝试它的一些用法及特性
回复 支持 反对

使用道具 举报

该用户从未签到

33#
 楼主| 发表于 2007-10-8 19:46:11 | 只看该作者

回复 32# 的帖子

你说的很对啊,每月1号位置不同,所以我做的步骤是:
首先得到一号所在的WeekDay,然后去处理需要的具体某天与一号的关系(自己写的代码),得到该天对应的行、列,然后就Click。
回复 支持 反对

使用道具 举报

该用户从未签到

34#
发表于 2007-10-8 19:59:23 | 只看该作者

回复 33# 的帖子

这样多麻烦。。。
可以先试试看我的方法吧

Set oDesc = Description.Create()
oDesc("micclass").Value = "WebElement"
'这里可以用更多属性来提取1-30号的对象
'比如oDesc("innerhtml") = ""   等等
Set WECollection = Browser("B").Page("P").Frame("F").WebTable("W").ChildObjects(oDesc)
maxDate = WECollection.Count   '这里检查下值是否为当月的天数,若不是就要另做下小处理
WECollection(iDay-1).Click   'iDay为要选择的天
回复 支持 反对

使用道具 举报

该用户从未签到

35#
 楼主| 发表于 2007-10-8 20:07:27 | 只看该作者
原帖由 hsjzfling 于 2007-10-8 19:59 发表
这样多麻烦。。。
可以先试试看我的方法吧

Set oDesc = Description.Create()
oDesc("micclass").Value = "WebElement"
'这里可以用更多属性来提取1-30号的对象
'比如oDesc("innerhtml") = ""   等等
Set  ...

恩,这个方法不错,我当时也想到用ChildObjects方法,可惜没去用,明天早上试试!~~谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

36#
发表于 2007-10-8 22:04:08 | 只看该作者

回复 27# 的帖子

我刚试着用了下ChildItem方法,用来取WebTable中的对象是没有任何问题的,所以你的ChildItem方法应该是没什么问题。还是那样,将参数都设置为常数调试看看~再有问题那只能是程序其它部分,或者说是被测对象的特殊问题~

明天试好了ChildObejcts方法记得说声~这几天休息,在家闲着也怪无聊的
回复 支持 反对

使用道具 举报

该用户从未签到

37#
 楼主| 发表于 2007-10-9 10:49:06 | 只看该作者

回复 36# 的帖子

Browser("B").Page("P").Frame("F").WebTable("W").RowCount的值等于10,而从界面上可以看到只有9行,所以可能Table里面是不是还套有Table!
回复 支持 反对

使用道具 举报

该用户从未签到

38#
发表于 2007-10-9 11:08:40 | 只看该作者
原帖由 看雪时节 于 2007-10-9 10:49 发表
Browser("B").Page("P").Frame("F").WebTable("W").RowCount的值等于10,而从界面上可以看到只有9行,所以可能Table里面是不是还套有Table!

你的问题好像变了。
确实是10行,没有隐藏,仔细从头数到尾,是10行。

还有关于具体日期,我觉得如果需要的话,可以把1-31全部的link添加到对象库里,或者
link("html tag:=A","text:="&daynumber).click
回复 支持 反对

使用道具 举报

该用户从未签到

39#
 楼主| 发表于 2007-10-9 11:26:57 | 只看该作者

回复 38# 的帖子

呵呵!问题确实变了,附图中确实是10行,但这个行数是变的,怪我现在做的和附图不同。
由于每个月不同显示的原因,你说的把1-31全部WebElement(没有Link)添加到对象库是不是不现实呢?
现在的这个问题确实匪夷所思啊!我已经没辙了,还有方法没?
Dim oCount
Set oDesc = Description.Create()
oDesc("innertext").Value = "11"
oDesc("class").Value ="day"    ' 注释:这个值有两个"day"、"day weekend",怎么在这写?用正则表达式吗?
Set WECollection=
Browser("B").Page("P").Frame("F").WebTable("W").ChildObjects(oDesc)
oCount = WECollection.Count-1
WECollection(oCount ).Click
回复 支持 反对

使用道具 举报

该用户从未签到

40#
 楼主| 发表于 2007-10-9 16:32:38 | 只看该作者
没人帮我了吗?
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-9-21 08:32 , Processed in 0.082976 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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