VU脚本是类C语言,区分大小写。所以在获取识别方法和属性值时最好的方法就是使用Inspector。
自己编写脚本时,还有一个要注意的问题是窗口上下文,窗口上下文不正确会导致回放时找不到对象。上面的脚本中Window SetContext, "Caption=计算器", ""下面的操作都是在这个窗口上进行的。编写脚本时一定注意看一下窗口上下文是否正确。
也可以在识别方法中指定窗口上下文,如Result = SQAGetProperty ("Type=Label;ObjectIndex=1", "Text", sum)可以改成Result = SQAGetProperty ("\;Type=Window;Caption=计算器;\;Type=Label;ObjectIndex=1", "Text", sum),第一个“\”代表桌面,“Type=Window;Caption=计算器”是计算器窗口,第二个“\”代表“Type=Window;Caption=计算器”和“Type=Label;ObjectIndex=1”是父子关系。这两个命令的效果完全一样。
SQABasic头文件包含一系列的声明,头文件可以应用到
一.声明共有或则全局常量,变量和用户定义类型
二.声明自定义sub,procedures和function
头文件中的声明可以应用到任何模块(脚本或者类库文件)。用’$include关键字,放在模块开始的地方-例如:
’$include “global.sbh”
SQABasic头文件类型
Sqabasic支持两种头文件类型:
一.头文件保存在sqabasic路径。不用指定任何路径信息就可以在本工程或者其他工程中应用他们
二.工程头文件可以保存在TMS_Script文件夹中。不用指定任何路径信息就可以在同一个工程中处理。
这两种SQABasic头文件都有同样的扩展名- .sbh
库文件
库文件包含一个或者更多供procedure从其它文件调用的sub,procedure和function。
一.SQABasic库文件(扩展名为.sbl或则.rec)
注意,.rec文件可以作为脚本文件或者库文件,但是.sbl只能被用作库文件。
二.动态连接库文件(扩展名.dll)
下边的表格这几种类库文件不同的总结:
.sbl
.rec
.dll
位置
SQABasic路径
当前工程文件中Datastore(文件夹 TMS_Script)
TMS_Script/dll文家夹或则其他位置
范围
在SQABasic路径中,对所有工程文件都可用
对同一个工程所有脚本可用
依靠位置
验证点
不支持
支持标准的robot验证点
支持自定义验证点
任何.rec文件都能作为库文件。不管怎样,如果一个.rec文件作为脚本(可以从robot中直接运行或者用callscript命令),他必须有一个main过程。
在SQABasic库文件中声明过程
如果在SQABasic过程中有一个自定义的过程,你声明类文件的方法同样适用声明过程。
下边的例子是在sqabasic库文件中(mylib.sbl)声明一个自定义过程(mysub):
Declare Sub MySub Basiclib “MyLib”( arg1 as string,arg2 as integer)
一.关键字basiclib,表示过程mysub在一个sqabasic库文件中
二.库文件的名字“mylib”,这里不需要写扩展名(.sbl或者.rec)
备注:basiclib关键字特指.sbx库文件的声明(和.dll库文件相对),这里不需要也不推荐带有.sbx扩展名的声明。
什么地方声明SQABasic库文件
可以在任何位置声明SQABasic库文件
一.在脚本或者其他库文件,仅在模块中应用过程
二.头文件中,用道的模块
库文件包含不需要指定的例程或者’include头文件
在dll文件声明过程文件
如果在dll文件的自定义过程,声明过程同样可以声明dll文件。
下边是dll文件中(mydll.dll)声明自定义过程(mysub)的例子:
declare sub mysub lib “mydll”(byval arg1 as string,Byval arg2 as integer)
一.声明中加入Lib关键字,表示声明的过程在dll文件中(相对于.sbl或者.rec sqabasic库文件)
二.库文件名字(mydll),跟随库指定的名称
三.参数声明通常包括关键字byval(参数声明包括任何关键字)
如果编译位置在sqabas32路径或在系统路径的库文件(.dll),你不用特别声明路径。如果库文件不再sqabas32或者在系统路径,你需要制定路径,比如
Declare Sub MySub Lib “E:MyDll” (byval arg1 as string,Byval arg2 as integer)
在什么地方声明dll文件
你可以声在任何为指声明dll文件:
1.脚本或者sqabasic库文件,要用过程的模块
2.头文件,任何模块指定的头文件
SQABasic路径
Sqabasic路径是robot保存和寻找sbl库文件和头文件的地方,用户在robot中也可以定义。
一旦你在robot中指定sqabasic路径,这个路径是固定的。不管怎样,robot自动设置sqabasic路径,当下列条件是真的时候:
i.仍没有明确在robot中定义sqabasic
ii.已经在rational Aministrator建立新的工程和数据仓库
iii.打开最近创建的工程和数据仓库
当上边所有条件为真的时候,robot自动在新工程和数据仓库中设置sqabasic路径到下列位置:
[NewProject][NewDatastore]DefaultTestScriptDatastoreTMS_ScriptSQABas32
设置步骤:
1)点Tools->General Options
2)点Preferences页面
3)在SQABasic路径中输入路径
Rational test早期版本没有提供菜单选项来设置sqabasic路径 – 参阅sqa common directory片断
指导使用头文件和库文件
推荐下边使用库文件方法:
a)自定义函数或者过程应该使用有同样文件名字的头文件(.sbh)和库文件(.sbl),比如DataFunctions.sbh和DataFunctions.sbl。这个过程和函数在头文件中定义(指定声明头文件)和在库文件中定义。看下边的例子
b)分离头文件(参阅常量头文件)用于包含常量,变量和用户定义类型用于脚本或者库文件调用。头文件用同样的文件名字后边附加_x或则_C(附加是早期命名规定)。注意包含常量和变量的头文件必须加入到声明头文件和库文件之前。(DataFunctions.sbh和DataFunctions.sbl),比如’include “DateFunctions_c.sbh”。这样做很容易维护。
c)通过分类或者程序把相关的函数放在同一个库里,例如,把所有日期相关的函数放到DataFunctions.sbh/sbl,或者把所有的函数加入为特定程序开发的函数库中(比如AppName.SBH/SBL)
d)函数是在库文件中子程序的的首选方式,处分过程的结果对于调用脚本是不相关的。函数应该返回一个值,或者适当的,数据可以通过变量或者数组返回。在后边的例子中,函数返回的结果表示成果或者失败。
e)库文件中的所有得函数和子程序必须有“注释“,包含这个过程的目的和用途::
请看下边的例子。
f)库文件的注释有合理的解释,通过读注释可以知道过程的逻辑
g)如果开发和维护robot库文件是集中管理的方式,那么你可以加入到’$include 所有库文件到global.sbh头文件中,这样做对所有头文件都有用。这可以加入缺省的脚本模板。作为选择,测试人员在每个脚本中可以选择或者包含需要的库文件。
文章来源于领测软件测试网 https://www.ltesting.net/