使用Rational Robot录制自动测试GUI脚本,在点击一个按钮以后,出现的结果可能有多种,可能会出现一个含“确定”按钮的对话框,也可能出现一个标题为”Title abcd”的窗体,可以使用SQAWaitForPropertyvalue方法来判断出现的属性,或者使用SQAWaitForObject来判断出现何种窗体,下面是两个对可能出现的属性进行判断的例子。
1).2秒内假若出现确定对话框,点击确定按钮,否则打印"确定按钮未出现" :
'等待2秒直到确定按钮出现.
Result = SQAWaitForPropertyvalue("Text=(O)确定", "Enabled",TRUE, 2000)
If Result <> sqaSuccess Then
print "确定按钮未出现"
Else
PushButton Click, "Text=(O)确定"
End If
2).2秒内假若出现标题为"Title abcd" 的窗体,打印"出现标题为Title abcd的窗体" ,否则打印"未出现标题为Title abcd的窗体" :
'等待2秒直到标题为Title abcd的窗体出现.
Result = SQAWaitForPropertyvalue("Caption=Title abcd", "Enabled",TRUE, 2000)
If Result <> sqaSuccess Then
PushButton Click, "Text=(O)确定"
print "出现标题为Title abcd的窗体"
Else
print "未出现标题为Title abcd的窗体"
End If
说明:
1).Result是一个Integer型变量;
2).SQAWaitForPropertyvalue:顾名思义,指的是等待一个属性被指定值之前暂停执行。SQAWaitForPropertyvalue("Text=(O)确定", "Enabled",TRUE, 2000)表示等待2秒直到确定按钮出现,如果2秒内未出现,则返回sqlfalse,出现则返回sqlsuccess;
3).SQA Basic中<>表示不等于;
4).另外,可以用SQAWaitForObject来判断出现出现的对象类型:
Result = SQAWaitForObject("Type=PushButton;Text=OK", 2000)
If Result = sqaSuccess Then
... ' add the rest of the actions/tests here
End If
识别控件
需要相应的enabler,你现在测试的程序是delphi开发的应用软件,那么就要加载相应的delphi enabler!
extension manager里边加入了delphi enabler,但是这个还是不能识别出delphi开发中用到的第三方控件或则其他控件!其实这里选择只是个打开使用真正的delphi enabler的开关,真正的delphi其实是一个sqasrvr.pas的单元文件,这个单元文件是识别控件的核心。
ratitonal 2003里边的test enabler安装选项中包含delphi enabler,但是它需要你本机上安装delphi,才会把delphi enabler安装到你的机器上。否则不会出现。
假如安装成功后,会在开始菜单中rational菜单下,rational test菜单下出现个delphi enabler(具体什么名字忘记了)的菜单项,通过它可以调用一个执行文件。
执行文件的功能就是把sqasrvr.pas自动放到工程文件的头。
delphi 工程文件只有加载了这个delphi enabler(核心 sqasrvr.pas)才会让robot识别,当然前提是你的extension manager中delphi选择了。
Robot手工编写GUI脚本如何获取对象识别方法和属性
以计算器为例,下面的脚本是键盘输入“1+1=”,然后关闭计算器。
Sub Main
Dim Result As Integer
StartApplication "C:\WINNT\system32\calc.exe"
Window SetContext, "Caption=计算器", ""
InputKeys "1{+}1{ENTER}"
Window CloseWin, "", ""
End Sub
Robot提供了获取对象识别方法和属性的利器――Inspector。通过Robot tools-Inspector..打开。现在使用SQAGetProperty命令获取1+1的结果值,并通过msgbox显示该值。
鼠标左键按住Inspectot工具栏上的“Select Objcet”按钮,然后选择计算器的结果放开鼠标左键。Inspectot中显示出对象的识别方法,鼠标左键点击工具栏上的“Copy recognition String”按钮拷贝识别方法,属性值通过选择Inspector左下角窗口中的Text属性,然后鼠标左键点击工具栏上的“Copy”按钮拷贝属性。修改后的脚本如下:
Sub Main
Dim Result As Integer
Dim sum as Variant
StartApplication "C:\WINNT\system32\calc.exe"
Window SetContext, "Caption=计算器", ""
InputKeys "1{+}1{ENTER}"
Result = SQAGetProperty ("Type=Label;ObjectIndex=1", "Text", sum)
msgbox sum
Window CloseWin, "", ""
End Sub
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)
文章来源于领测软件测试网 https://www.ltesting.net/