51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2440|回复: 6
打印 上一主题 下一主题

[原创] 关于使用描述性编程中使用检查点的问题(难)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-3-17 23:12:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题描述:
先看如下代码:

...
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 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-3-18 10:17:22 | 只看该作者
1、在关键字视图里面,点击检查点所在行,通过右键是可以设置检查点属性值的;
2、设置检查点属性值的时候,就可以对要检查的某个属性进行参数化;
3、参数的时候可以通过datatable,或着变量都可以。
没有针对你所描述的问题实际操作过,先试试上述方法是否可行吧。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-3-18 10:42:10 | 只看该作者
不是高手的人飘过
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-3-18 10:51:55 | 只看该作者
以下我对你的问题的看法,个人学习经验,如有错误请指正。
问题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

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-3-18 13:45:19 | 只看该作者

回复 4# 的帖子

首先感谢你的回复,让我找到些眉目。

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

对于您回答的第二个问题!方法非常不错。比我想的折中方法简单了些。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-3-18 13:58:41 | 只看该作者

回复 5# 的帖子

我用的10的。9.2的话,应该是和2楼的回复一样,可能是版本的问题,在9.2里没有显示出来的原因。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2009-3-18 14:19:31 | 只看该作者

回复 5# 的帖子

原来如此。9.2的对象仓库里面没有显示检查点对象。但是检查点对象还是保存在某个地方了。
看来我要去升级了。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-9-21 14:27 , Processed in 0.080770 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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