这一步唯一要做的就是把“视频”对象同样添加到Action2中,以备不时需要。“视频”对象在?link.tsr?文件中,在添加前可以看到目前该文件中的对象没有出现在?Action2中(图1-89),就是因为在设置时没将Action2从可用设成已用(见图1-26)。所以,只需要将Action2“右移”就可以了,步骤直接忽略,最终效果如图1-90所示。
图1-90
在“视频”对象被添加进Action2后,目标也就完成了。不过相信细心的读者会发现一个问题,大家先把书翻到前面看图1-87,在link.tsr文件被加载后,Action1中的所有对象都是灰色显示的,这代表这些对象是从副对象库中加载的,那为什么到了Action2中,只有“视频”这个子对象灰色而其父对象与祖父对象不灰色(请看QTP当前环境,也可看图1-90)?其实道理很简单,“视频”、“百度一下”、“wd(搜索框)”都是子对象,它们的祖父对象Browser以及父对象Page是3兄弟共有的。之前已经完整操作过一遍了,添加“百度一下”是添加到本地对象库的,所以,其父对象Page以及祖父对象Browser也属于“本地对象”,“本地对象”是不会灰色且可编辑的,这个毋庸置疑。那么在“视频”对象加载进来后,由于它的祖父对象和父对象与Action2中的完全吻合,QTP会在吻合的时候进行合并,“户主”还是原来的“本地对象”,所以“视频”对象只能自己灰色,QTP绝对不会允许它改变它祖父和父亲的“户籍”,这就是QTP的一个规则,虽然不是很重要,但是还是需要为读者揭开这个谜团。其实在之前加载“百度搜索框”的步骤时就已经出现了这个情况,“wd”灰色而其祖父Browser与父亲Page不灰色。
到这里为止,整个实例过程讲解全部结束,这个实例还是比较细致的,在分步讲解过程中,也扩展穿插了一些小知识点,希望读者能够完全掌握“副对象库”的使用方法并做到融会贯通!另外需要注意,点击QTP的上方菜单栏Resources→Associate Repositories,同样能够打开副对象库,入口不同但是结果是相同的。
在结束第10小点之前,作者还要分享一句代码,它就是本书中会陆续讲到的3大实时动态加载的第1个之“动态对象库加载”,代码如下所示:
RepositoriesCollection.Add "D:\QTP自动化测试技术领航\link.tsr" |
这句代码写在脚本中,一旦被执行到以后会触发加载对象库文件使其成为副对象库的事件,效果和手工添加副对象库完全一致,只是没有了选择Action并加载的步骤,因为没必要,把这句代码写在Action1中,则说明加载到Action1中;添加到Action2中,则代码加载到Action2中,依此类推。通常,把3大实时动态加载的代码写在脚本的最前面几行,另外需要注意的是,3大实时动态加载的生命周期都很短,脚本执行结束它们也就结束。下面提供一个用VBScript后台语言动态调用副对象库的函数供读者参考:
Public Function AddObjectRepository(objectrepositoryname) Dim Pos '判断:如果已存在".tsr"后缀名则直接使用该文件路径,如果不存在则添加后缀名 If instr(objectrepositoryname,".tsr") > 0 Then RepPath = objectrepositoryname else RepPath = objectrepositoryname & ".tsr" End If '初始化:如果存在残留的副对象库则删除 RepositoriesCollection.RemoveAll() '添加副对象库 RepositoriesCollection.Add(RepPath) '添加后的验证:查找副对象库并将值返回给变量,如果存在返回1 Pos = RepositoriesCollection.Find(RepPath) MsgBox Pos '返回的值如果不等于1代表不存在则报错 If Pos <> 1 Then MsgBox "找不到副对象库!" End If End Function '调用该函数 Call AddObjectRepository("D:\QTP自动化测试技术领航\link.tsr") |
本文选自《51Testing软件测试作品系列》之九——《精通QTP——自动化测试技术领航》。
本站经人民邮电出版社和作者的授权,近期将进行部分章节的独家连载,敬请期待!
版权声明:51Testing软件测试网获人民邮电出版社和作者授权独家连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
相关阅读: