Thomson-Blog ( 学习,学习,再学习;努力,努力,再努力。)
在学习的路上不断成长,成功之路就在脚下。
      在Robot没有直接的方法到Odject Data的值,但是我们可以用验证点中专门有一个Odject Data验证点来获取对象的值,按照这样的方法,在脚本中获取Odject Data,先学习一下Odject Data验证点。当在脚本中插入一个Odject Data验证点时,会生成一个BaseLine File(后缀名grd),用于保存插入验证点时用作预期结果的Odject Data。当回放脚本时,如果实际的Odject Data与预期的Odject Data一致,在Build目录下会生成一个grd文件,文件名中含有exp,用于存放预期的Odject Data,如果实际的Odject Data与预期的一致,此时就不保存实际的Odject Data,如果实际的Odject Data与预期的Odject Data不一致,则除了生成前面所说的文件外,还会生成一个grd文件,文件名中含有act,用于存放回放时实际的Odject Data,而这些grd文件的Path都是符合特定规则的,因此我们完全可以给出保存实际Odject Data的grd文件的Path,从该文件中读取我们所需要的Odject Data的值。这样就可以在脚本中通过判断Odject Data的值来控制脚本行为。另外,还有一点要说明的是,有些Odject的Odject Data有好几种,例如对于HTMLDocument而言,其Odject Data包括Contents,HTML Text,Document URL和Document Title四种,想获取哪一种的值,就要在插入验证点时选择该项,再去读取相应的grd文件即可。下面结合一个实际的例子,详细说明一下如何在脚本中读取Odject Data的值。

      首先建立一个工程web,工程位于d:\。然后新建一个Script,名为test。以“消费论坛”首页作为被测对象。选择插入Odject Data验证点,验证点的Name为Odject Data,Wait state根据情况设置,Expected result选择Pass。确定后选择HTMLDocument,HTMLTitle=消费论坛。然后在data test中选择Contents,再使用缺省设置确定后完成验证点的添加。这时在目录d:\web\TestDatastore\DefaultTestScriptDatastore\TMS_Scripts\vp下就会产生一个基线文件test.Object Data.base.grd,文件的内容即是插入验证点时所选Object的Contents。注意我们一定要做两处的修改:1、需要修改一下该验证点文件的内容,使其内容在实际运行中永远不会出现,即使该验证点永远不会通过,只有这样回放时才能生成保存实际Contents的grd文件,(可以直接打开验证点文件修改或在Robot的Asset pane中双击验证点以打开Grid Comparator修改此文件);2、由于验证点不通过时会在日志log中显示红色的Fail,则影响我们log日志观察,所以需要将其从log中去掉。则在脚本中验证点之前加入SQASuspendLogOutput即可,该验证点的结果便不会写入日志log中,然后再在验证点之后加上SQAResumeLogOutput以恢复输出日志log。当完成以上修改后,回放脚本时,当执行完验证点后,在d:\web\TestDatastore\TMS_Builds\Build 1.Build\Default.LogFolder\test.Log\vp目录下会生成两个grd文件,其中一个名为test.Object Data.exp.grd,保存Contents的预期值;另一个名为test.Object Data.act????.grd(?代表一个字母或数字,该文件的文件名每次运行脚本时都会不同,“act”后有随机的4位字母或数字),保存Contents的实际值。这样,在脚本中验证点后打开文件test.Object Data.act????.grd,即可读取Contents值,以控制脚本行为。我们使用API函数FindFirstFile,具体用法参见MSDN帮助(由于文件名中有4个随机字符,因此无法使用确切的Path来打开文件。)该函数可以在参数Path中使用通配符,即用“d:\web\TestDatastore\TMS_Builds\Build 1.Build\Default.LogFolder\test.Log\vp\test.Object Data.act*.grd”作为Path,该函数会在VP目录下搜索符合条件的文件,当找到第一个符合条件的文件后(由于VP目录下只有一个这样的文件,因此可用此函数),打开该文件并返回该文件的句柄,并将该文件的一些信息保存到一个结构体中。得到文件句柄后,可以用API函数ReadFile读取文件中的内容。当使用完该文件后,再用API函数FindClose关闭所打开的文件。这样的方法可以对“HTMLDocument,HTMLTitle=消费论坛”的Contents的获取。

posted on 2008-07-15 14:28  Thomson-Blog  阅读(392)  评论(0)    收藏  举报