51Testing软件测试论坛

标题: 小功能 QTP实现 之 难点 [打印本页]

作者: higkoo    时间: 2008-2-29 12:16
标题: 小功能 QTP实现 之 难点
前不久提了个“QTP缺陷”的貼子:
http://bbs.51testing.com/thread-106282-1-1.html

今天出来说明一下。

下图所示,就是一个数据录入的过程。
首先是已有的数据列表;
点新增进入添加数据页面,点确定后保存但不返回列表,此时可以再修改再保存;
点返回后,返回到数据列表,然后可以再新增。

就这么简单且普通的动作,用QTP来做了一下,发现问题还挺复杂的。

  1. for i = 1 to 10
  2.     '新增
  3.     '录数
  4.     '返回
  5. next
复制代码

结果回放就出现对象无法识别。
调试了许久才发现是Frame对象属性在不停的变,每次点新增,录数,确定时变一次。
初次Frame的name属性是main;
新增了一条后,Frame的name属性是myFrame
再新增一条后,Frame就多了index=1,然后index不断递增。

如此神奇!
规律是摸清楚了,脚本按规律来写应该还是可以实现的。
只是太麻烦了,没有必要为了自动化而去自动化。

最后我每次返回直接刷新列表页面,让Frame再变成name:=main,这样是最简单的方法了。

这个例子,并不是QTP的缺陷,而是 手工vs工具  人脑vs电脑 的差别了,你觉得呢?
作者: CPC    时间: 2008-2-29 12:32
动态去得到Object.
作者: higkoo    时间: 2008-2-29 12:36
标题: 回复 2# CPC 的帖子
能说详细一点吗?
作者: gy21st    时间: 2008-2-29 13:01
这个不是什么难点吧,不正好用描述行编程解决吗?
作者: higkoo    时间: 2008-2-29 13:08
标题: “规律是摸清楚了,脚本按规律来写应该还是可以实现的。”
这么小个功能就来大动肝割

  描述性编程是可以解决呀
就是 Frame 的 name 属性 和 index 属性动态嘛。
作者: Salina    时间: 2008-2-29 14:19
你用下面的regular expression就可以识别所有的frame了:
Frame的name属性: main|myFrame.*
或者你可以观察一下这个frame,  看看有没有其它可以唯一确定它的属性.
作者: gy21st    时间: 2008-2-29 14:46
对象属性动态变化的时候,如果你觉得描述性编程是大动干戈,那恐怕真难找到小动干戈的解决方法。除非你把对象库中对象的识别属性全部用正则表达式表述,那和描述行编程也是一个道理。
作者: higkoo    时间: 2008-2-29 18:08
标题: 回复 7# gy21st 的帖子
有个捷径:
录入一个 新增——录入信息——确定——返回  的动作,完成后重新进入这个列表。

这样循环就不用修改任何东西。
作者: higkoo    时间: 2008-3-1 10:40
标题: 回复 4# gy21st 的帖子
“这个不是什么难点吧”

标题是没有起好!

这个问题是开发设计的问题,已经和相关人员沟通过了。
作者: ppent    时间: 2008-3-3 12:12
标题: 回复 9# 的帖子
支持,有些工作用自动化做起来比较费力的,在代码上其实修改很简单。
转变一下思路,有些困难就迎刃而解了。
在这个问题上,我赞成通过代码解决,当然用描述性编程也并非不可。
作者: hxf    时间: 2008-3-11 14:55
对呀!这个可以用描述性编程来实现呀




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