51Testing软件测试论坛

标题: 关于使用描述性编程中使用检查点的问题(难) [打印本页]

作者: onlonely    时间: 2009-3-17 23:12
标题: 关于使用描述性编程中使用检查点的问题(难)
问题描述:
先看如下代码:

...
set ehome = Browser("name:=家务中心 - eHome 网家 — 记录家庭成长").Page("title:=家务中心 - eHome 网家 — 记录家庭成长")
ehome.Link("text:=退出","index:=0").Check CheckPoint("退出")
ehome.Link("text:=退出","index:=0").Click

你会发现,如果直接拷贝这段代码到专家视图里面,检查点是绝对无法通过的。

经过我多次搜索和各处查找资料后,总结出一个原因:
由于QTP对于检查点是按照一个对象来看待的,检查的时候用检查点对象和检查的对象的属性做比较。
但是检查点使用的对象和普通的对象并不是在一起的。并且我找遍了整个工具都没有找到检查点使用的对象是放在那里(对象仓库是肯定没有的)!

通过这个现象你也可以明确感觉到。那就是:对于同一个地方设定2个检查点,你会发现第二个检查点并不一样。
如:
Browser("家务中心 - eHome 网家 — 记录家庭成长").Page("家务中心 - eHome 网家 — 记录家庭成长").Link("退出").Check CheckPoint("退出")
Browser("家务中心 - eHome 网家 — 记录家庭成长").Page("家务中心 - eHome 网家 — 记录家庭成长").Link("退出").Check CheckPoint("退出_2")

由此可见检查点使用的对象,一定是存放了一个地方,只是我还不知道在那里。

所以我的问题就是:
1。检查点使用的对象放在那里了。
2.如何在“描述性编程”里面参数化检查点里面的内容。
如上面的检查点,我希望参数化检查“退出”这个连接的地址。因为普通设定检查点的时候是容易参数化连接地址。但是使用描述性编程后,检查点只是一个对象名称,并不能设置检查内容。


---最后但愿真正的高手能够出现。

[ 本帖最后由 onlonely 于 2009-3-17 23:13 编辑 ]
作者: huizhen    时间: 2009-3-18 10:17
1、在关键字视图里面,点击检查点所在行,通过右键是可以设置检查点属性值的;
2、设置检查点属性值的时候,就可以对要检查的某个属性进行参数化;
3、参数的时候可以通过datatable,或着变量都可以。
没有针对你所描述的问题实际操作过,先试试上述方法是否可行吧。
作者: dreamever    时间: 2009-3-18 10:42
不是高手的人飘过
作者: jinsen    时间: 2009-3-18 10:51
以下我对你的问题的看法,个人学习经验,如有错误请指正。
问题1:检查点使用的对象放在那里了。
对于这个问题,我的理解是:如果你使用了QTP的检查点来进行检查的话,它的过程是
A 录制流程 -> B 插入检查点 -> C 重复流程(回放)
那么在步骤 A 的时候,会把流程中操作的对象记录到QTP的对象库中;
在步骤 B 的时候,在已经记录的对象(对象库的)中,选择你想要进行检查的点,对它的属性进行修正,即你预期的对象属性;
在步骤 C 的时候,重复流程,进行检查点检查。
我想你问题应该是修正后的对象是在什么地方。不清楚有没有注意到,在你使用QTP的检查点后,会在原本的流程中多出一行,那行就是你的检查点,这时你打开对象库,也会发现比原来多了一点东西,那个就是插入的检查点对象。所以我的理解是<检查点使用的对象>还是放置在对象库中的。(看一下我上传的图片附件)
问题2:如何在“描述性编程”里面参数化检查点里面的内容。
以下是我在做“描述性编程”时,如何使用参数化来进行检查的。
<DataTable("LinkName", dtGlobalSheet)>:LinkName是使用的DataTable的列名,dtGlobalSheet是全局表。
判定dtGlobalSheet中的LinkName列的Link是否存在。判定属性是“Text”
If Browser("CreationTime:=0").Page("index:=0").Link("text:=" & DataTable("LinkName", dtGlobalSheet)).Exist Then
    Reporter.ReportEvent micPass, "Pass",  "Pass"
Else
    Reporter.ReportEvent micFail, "Fail", "Fail"
End If
作者: onlonely    时间: 2009-3-18 13:45
标题: 回复 4# 的帖子
首先感谢你的回复,让我找到些眉目。

另外对于第一个问题,我也截了图。可以发现我这里面是没有检查单对象的。
也许是我的设置问题。我的是9.2版本的。

对于您回答的第二个问题!方法非常不错。比我想的折中方法简单了些。
作者: jinsen    时间: 2009-3-18 13:58
标题: 回复 5# 的帖子
我用的10的。9.2的话,应该是和2楼的回复一样,可能是版本的问题,在9.2里没有显示出来的原因。
作者: onlonely    时间: 2009-3-18 14:19
标题: 回复 5# 的帖子
原来如此。9.2的对象仓库里面没有显示检查点对象。但是检查点对象还是保存在某个地方了。
看来我要去升级了。




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