51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

12
返回列表 发新帖
楼主: hollyecho
打印 上一主题 下一主题

[原创] 代码中使用SPY得出的OBJECT属性,报错

[复制链接]

该用户从未签到

21#
 楼主| 发表于 2009-2-27 13:47:17 | 只看该作者
先谢谢dreamever和风雪夜归人的热心帮助了!
回复 支持 反对

使用道具 举报

该用户从未签到

22#
 楼主| 发表于 2009-2-27 13:51:46 | 只看该作者
用这个描述性编程:
msgbox Browser("系统登陆入口").Page("顺丰速运客户核心业务系统").Frame("rtmfrm").WebTable("html tag:=DIV","innerhtml:=时间段编号").exist

打印出false
回复 支持 反对

使用道具 举报

该用户从未签到

23#
 楼主| 发表于 2009-2-27 14:17:37 | 只看该作者
browser("")之所以变化了,是不是因为界面上有两个FRAME的原因呢?SPY工具把RTMFRM的页面识别成另外一个了。我猜测的~
回复 支持 反对

使用道具 举报

该用户从未签到

24#
发表于 2009-2-27 15:26:45 | 只看该作者

我也是刚学qtp的,不知道多少,谈下我的看法

qtp识别对象是根据对象库里面的对象去识别的,这个就需要你把对象加入对象库,一般来说,录制就是为了达到这个目的,如果对象库里面没有这个对象,而你又不想录制或者加入的话,可以采用描述性编程,就是根据一些属性去唯一定位一个对象,要注意的一点就是如果父对象用的是描述性编程,则子对象都要用到描述性编程。要不不能识别的。( 我曾经尝试过直接使用描述性编程去写一个https的登陆流程,好麻烦。。)

至于为什么不能识别webtable,这个我也不知道,我自己写了一个table也识别不了, 崩溃了,不过用录制的可以,我也不知道为什么~求答案。。
回复 支持 反对

使用道具 举报

该用户从未签到

25#
 楼主| 发表于 2009-2-27 17:28:26 | 只看该作者
有FRAME的页面,添加检查点,无法获取到webtable
不知道我验证出来的结果正确不正确?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

26#
 楼主| 发表于 2009-2-27 17:32:15 | 只看该作者
我这里说详细点,按照那个frame的截图,列表中选择一栏,添加STANDARD CHECKPOINT,是无法获得WEBTABLE对象的,不知道为什么?

而列表那个FRAME的页面,单独运行,是可以获取WEBTABLE对象的

那么有FRAME的列表数据该如何去验证。

用了虚拟对象,但又说虚拟TABLE没属性,无法获取指定行列的数值,真是郁闷死了!

回复 支持 反对

使用道具 举报

该用户从未签到

27#
发表于 2009-3-2 09:39:57 | 只看该作者
我碰到过一种情况,有时侯spy出来的属性却不是对象实际运行时的属性,你可以尝试一下以下的方法。

1.录制一遍你的操作
2.然后在录制的脚本的基础上改成描述性编程(很多时候spy出来的对象的层次结构很多是可以省略的)
3.回放,看是否会出错,如果出错,用**.exist()判断是哪里不能识别了,是否还是最后那个“时间段编号‘找不到
4.如果出现”时间段编号“找不到的错误,则用childobjects方法把webelement的对象都找出来,把它们的实际运行属性打出来看看(getroproperty)。
回复 支持 反对

使用道具 举报

该用户从未签到

28#
 楼主| 发表于 2009-3-3 15:07:06 | 只看该作者
用了个笨办法,各位高手请看看是否有什么好建议?

先用QTP帮助文档中的例子,获取数据列表的对象属性

'获取frame=rtmfrm的对象的子对象
Set oDesc = Description.Create()
oDesc("micclass").Value = "WebTable"
Set Lists = Browser("系统登录入口").Page("顺丰速运客户核心业务系统").Frame("rtmfrm").ChildObjects(oDesc)
NumberOfLists = Lists.Count()

For i = 0 To NumberOfLists - 1
  msgbox i
  msgbox Lists(i).GetROProperty("name")
  msgbox Lists(i).GetROProperty("innertext")
Next

此时可得到对象的INDEX=4,CLASS=WebTable

然后就可以用 Lists(4).getCellData(m,n) 方法,与数据库中获取的数据一一对比了。

各位认为这样处理如何呢?
回复 支持 反对

使用道具 举报

该用户从未签到

29#
发表于 2009-3-11 12:09:45 | 只看该作者
看过一个类似的帖子:
http://bbs.51testing.com/viewthr ... hlight=%B6%D4%CF%F3
应该可以帮到你。

[ 本帖最后由 topor 于 2009-3-11 12:12 编辑 ]
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-24 18:52 , Processed in 0.070552 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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