测试 第二期杂志中的“关于 SQA GetProperty的使用”一文,对其中的一个问题产生了兴趣。文中提到,SQAGetProperty只能得到Object Property,无法得到Odject" name="description" />
首先建立一个工程shiyan,工程位于F:\Rational\project目录下。然后新建一个Script,名为111。以51testing的首页作为被测对象。选择插入Odject Data验证点,验证点的Name为Odject Data,Wait state根据情况设置,Expected result选择Pass。确定后选择Odject:HTMLDocument,HTMLTitle=51Testing软件测试网:软件测试的专业网站。然后在data test中选择Contents,再使用缺省设置确定后完成验证点的添加。这时在目录F:\Rational\project\shiyan\TestDatastore\DefaultTestScriptDatastore\TMS_Scripts\vp下就会产生一个基线文件111.Object Data.base.grd,文件的内容即是插入验证点时所选Object的Contents。这时要作2处小小的修改:首先,需要修改一下该基线文件的内容,使其内容在实际运行中永远不会出现,即让该验证点永远不会通过,这样回放时才会生成保存实际Contents的grd文件,可以直接打开基线文件修改或在Robot的Asset pane中双击验证点以打开Grid Comparator,在其中修改基线文件;其次,由于该验证点是永远不会通过的,其结果我们并不关心,不需要出现在log中,否则反而影响我们观察log,因此,需要将其从log中去掉。这个只需要在脚本中验证点之前加入SQASuspendLogOutput即可,该验证点的结果便不会写入log中,然后再在验证点之后加上SQAResumeLogOutput以恢复输出log。完成以上工作后,回放该脚本时,当执行完验证点后,在F:\Rational\project\shiyan\TestDatastore\TMS_Builds\Build 1.Build\Default.LogFolder\111.Log\vp目录下会生成两个grd文件,其中一个名为111.Object Data.exp.grd,保存Contents的预期值;另一个名为111.Object Data.act????.grd(?代表一 个字母或数字,该文件的文件名每次运行脚本时都会不同,“act”后有随机的4位字母或数字),保存Contents的实际值。这样,在脚本中验证点后打开文件111.Object Data.act????.grd,即可读取想要的Contents值,以控制脚本行为。由于文件名中有4个随机字符,因此无法使用确切的Path来打开文件,在这里可以使用API函数FindFirstFile(具体用法参见MSDN),该函数可以在参数Path中使用通配符,即用“F:\Rational\project\shiyan\TestDatastore\TMS_Builds\Build 1.Build\Default.LogFolder\111.Log\vp\111.Object Data.act*.grd”作为Path,该函数会在VP目录下搜索符合条件的文件,当找到第一个符合条件的文件后(由于VP目录下只有一个这样的文件,因此可用此函数),打开该文件并返回该文件的句柄,并将该文件的一些信息保存到一个结构体中。得到文件句柄后,可以用API函数ReadFile读取文件中的内容。当使用完该文件后,再用API函数FindClose关闭所打开的文件。至此,我们就完成了对“Odject:HTMLDocument,HTMLTitle=51Testing软件测试网:软件测试的专业网站”的Contents的获取。
版权声明:51testing软件测试网及相关内容提供者拥有ltesting.net内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。