对象库的不足
作者认为QTP 8.x的对象库有一些不足:
1)对象库管理器不允许批量更新对象属性到脚本。
2) 其他对象下面的对象不能被删除或复制。
3)当一个框体(frame)被加入到了被测的应用程序中时,那么整个测试脚本都要重新录制。
4)当重新录制一个页面或者窗体时,完全一样的对象经常会重复添加,因此,会创建很多相同的页面或窗体:Page_1, Page_2诸如此类。有时候这个问题可以通过更改Web设置来解决,
打开Tools->Options…Web(Tab)->Page/Frame Options…然后更改设置如图3-12所示
图3-12页面和框体选项
小提示:以上所述的大多数的不足在 QTP9.x中已经得到解决
第九章库函数文件
库函数文件是包含VBScript脚本的纯文本格式文件,用来声明方法,变量,类等。库函数文件可以用任意后缀名,最常用的是VBS或者TXT。库函数文件可以用来组织存放不同功能的代码。它提供了在不同的QTP脚本中分享代码的方法。下面两节介绍加载库函数文件的两种方法。
关联一个全局库函数文件
通过这种方式库函数文件的同一实例可以被当前测试的所有Action共享和访问。如图9-1,打开 Test->Settings… ->Resources (标签页),添加库函数文件。
图9-1 Test Resource配置
小提示1:多个库函数文件加载顺序是从下到上。如果有两个库函数文件包含相同函数,那么会使用更靠近顶部的。
小提示2:如果库函数文件B依赖库函数文件A中的内容,库函数文件A应在列表中更靠近底部。
小提示3:QTP使用全路径名存放库函数文件。作为推荐选项,我们可以使用文件相对路径,如"..\test.vbs"
运行时动态加载本地库函数文件
QTP提供ExecuteFile方法可以在运行时动态加载库函数文件。使用这种方法时库函数文件及其内容只能在ExecuteFile执行的那个Action中可见。下面是一些例子:
'通过绝对路径加载库函数文件 ExecuteFile "C:\Test.vbs" '通过相对路径加载库函数文件 currentTestDir = Environment("TestDir") vbsFilePath = currentTestDir& "\..\..\CommonLibs\Test.vbs" ExecuteFilevbsFilePath '从Quality Center加载库 ExecuteFile "[QC-ATTACH];;Subject\CommonLibs;;\Test.vbs" |
小提示:如果ActionA和ActionB都通过ExecuteFile加载了test.vbs,同时ActionA调用ActionB,要注意他们对于所有test.vbs的变量和方法都只使用自己的副本和单独实例。
运行时动态加载全局库函数文件
如之前描述,在一个Action中直接使用 ExectueFile方法只能使库函数文件在当前Action可见。但是每个QTP测试脚本可能需要一组全局库,使得对其中所有的Action都可用。取代直接在Action中使用ExecuteFile来加载库的方法,我们在某个全局库中加载库函数文件,那么它将对所有Action可用。
'C: \LibLoader.vbs Public Function ExecuteFileGlobal (ByValfileName) ExecuteFilefileName End Function |
我们可以将以上代码保存在一个VBS文件中并跟测试关联,使得在任意Action中都能通过调用ExecuteFileGlobal方法来加载文件。这样加载的文件在所有Action中都可以使用。
'在全局区域加载文件 ExecuteFileGlobal "C:\Test.vbs" |
但是当多个Action反复调用ExecuteFileGlobal会使某个库函数文件加载多次,这样每次都会破坏当前库函数文件中的全局变量的状态。
这个问题可用使用下面的方法解决。我们给 ExecuteFileGlobal方法增加一个加载标记,当它为False时库函数文件就不会加载。可以通过给所有使用 ExecuteFileGlobal方法加载的库函数文件创建一个全局字典来实现。库函数文件的路径用来判断这个库是否被加载过。
原文转自:http://www.uml.org.cn/Test/201307084.asp