Robot使用技巧和实用函数集合.docx
- 文档编号:24558474
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:29
- 大小:28.73KB
Robot使用技巧和实用函数集合.docx
《Robot使用技巧和实用函数集合.docx》由会员分享,可在线阅读,更多相关《Robot使用技巧和实用函数集合.docx(29页珍藏版)》请在冰豆网上搜索。
Robot使用技巧和实用函数集合
Robot使用技巧和实用函数集合
第一个:
(转自网上)
*******************************************************************
功能说明:
出现一个提示对话框,N秒后消失,比如说:
提示等待一个窗口阿,有时候这个窗口没了,我也不知道脚本运行到什么地方了,提示一下挺好,也方便其他的测试员修改,而且,也不影响无人值守的操作
例子:
SQAMsgbox"test","title",5
GlobaliTimeasInteger
DeclareFunctionTimedDlgFunc(idAsString,ActionAsInteger,SuppValueAsLong)AsInteger
DeclareFunctionSQAMsgBox(sMsgTextasString,OptionalvMsgCaptionasVariant,OptionalvTimeOutasVariant)asInteger
FunctionTimedDlgFunc(idAsString,ActionAsInteger,SuppValueAsLong)AsInteger
StaticStartTime
DimEndTime
DimvTimeoutValueasVariant
SelectCaseAction
Case1 'DialogboxInitialization
StartTime=Timer
IfStartTime+iTime>=86400Then
StartTime=86400-StartTime-iTime
EndIf
TimedDlgFunc=1
Case2 'Buttonpushedoranycontrolchanged(excepttypingintextorcombobox)
SelectCaseSuppValue
Case1
DlgEnd-1
Case2
DlgEnd0
CaseElse
TimedDlgFunc=0
EndSelect
Case3 'Changeintextorcomboboxcontents
TimedDlgFunc=1
Case4 'Changeofcontrolfocus
TimedDlgFunc=1
Case5 'Idlestate(return0topreventthisbeingcontinuallycalled)
EndTime=Timer
If(EndTime-StartTime)>=iTimeThen
DlgEnd-1
EndIf
vTimeoutValue=Format(iTime-(EndTime-StartTime),"#.#")
DlgTextDlgControlID("txtTimeValue"),CStr(vTimeoutValue)
TimedDlgFunc=1
EndSelect
EndFunction
FunctionSQAMsgBox(sMsgTextasString,OptionalvMsgCaptionasVariant,OptionalvTimeOutasVariant)asInteger
DimResultasInteger
DimTotalTimeAsInteger
DimsCmdTextasString
DimsTimeoutTextasString
DimvValueasVariant
IfIsMissing(vMsgCaption)Then
vMsgCaption="SQAMsgBox"
EndIf
IfIsMissing(vTimeOut)Then
vTimeOut=20 'seconds
EndIf
sTimeoutText="Timeout:
"
'-----
BeginDialogdlgMsgBox200,80,vMsgCaption,.TimedDlgFunc
GroupBox5,2,190,40,"",.grpMsgTxt
Text15,11,175,25,sMsgText,.txtMsgText
Text15,47,180,20,sCmdText,.txtCmdText
'--------------
Button20,60,40,14,"&OK",.btnOK
Button140,60,40,14,"&Cancel",.btnCancel
Text78,63,30,10,sTimeoutText,.txtTimeText
Text108,63,20,10,vTimeout,.txtTimeValue
EndDialog
'-----
DimTimedDlgAsdlgMsgBox
iTime=CInt(vTimeOut)
Result=Dialog(TimedDlg)
IfResult=2Then
SQAMsgBox=sqaFail
Else
SQAMsgBox=sqaPass
EndIf
EndFunction
*******************************************************************
第二个:
(来自于网上)
******************************************************************
关于Recognition
一共分为Recognition,ParentRecognition,FullRecognition
1.Tofindtherecognitionmethodofthecurrentlyactivewindow:
Result=SQAGetProperty(".\","Recognition",value)
Returnedvalue:
Type=Window;Name=frmMain
抓出来的是当前窗口的一些信息
2.TofindtheimmediateparentofthetreeviewitemBach:
Result=SQAGetProperty("Name=treMain;\;ItemText=Bach","arentRecognition",value)
Returnedvalue:
Type=TreeView;Name=treMain
抓出来的是树型结构的父结点的信息
3.TofindthecompleteobjectpathofthetreeviewitemBach,beginningwiththedesktopandendingwiththetargetobjectitself:
Result=SQAGetProperty("Name=treMain;\;ItemText=Bach","FullRecognition",value)
Returnedvalue:
Type=Window;Name=frmMain;\;Type=TreeView;Name=treMain;\;Type=TVItem;ItemText=Bach
抓出来的是树型结构中指向该控件的全部路径
第三个:
(来自于网上)
****************************************
RationalRobot中自动进行100次操作
RationalRobot中的SQABasic与Basic语言极为类似,下面是一个for循环的例子,其中cstri()函数把整数转换成字符串。
SubMain
DimResultAsInteger
DimiAsInteger
……
'beginofforloop
fori=1to100step1
……
InputKeyscstr(i*3)'这个地方设置输入值为I*3.
……
next
'endofforloop
……
EndSub
识别控件
需要相应的enabler,你现在测试的程序是delphi开发的应用软件,那么就要加载相应的delphienabler!
extensionmanager里边加入了delphienabler,但是这个还是不能识别出delphi开发中用到的第三方控件或则其他控件!
其实这里选择只是个打开使用真正的delphienabler的开关,真正的delphi其实是一个sqasrvr.pas的单元文件,这个单元文件是识别控件的核心。
ratitonal2003里边的testenabler安装选项中包含delphienabler,但是它需要你本机上安装delphi,才会把delphienabler安装到你的机器上。
否则不会出现。
假如安装成功后,会在开始菜单中rational菜单下,rationaltest菜单下出现个delphienabler(具体什么名字忘记了)的菜单项,通过它可以调用一个执行文件。
执行文件的功能就是把sqasrvr.pas自动放到工程文件的头。
delphi工程文件只有加载了这个delphienabler(核心sqasrvr.pas)才会让robot识别,当然前提是你的extensionmanager中delphi选择了。
出现一个提示对话框,N秒后消失,比如说:
提示等待一个窗口阿,有时候这个窗口没了,我也不知道脚本运行到什么地方了,提示一下挺好,也方便其他的测试员修改,而且,也不影响无人值守的操作
例子:
SQAMsgbox"test","title",5
GlobaliTimeasInteger
DeclareFunctionTimedDlgFunc(idAsString,ActionAsInteger,SuppValueAsLong)AsInteger
DeclareFunctionSQAMsgBox(sMsgTextasString,OptionalvMsgCaptionasVariant,OptionalvTimeOutasVariant)asInteger
FunctionTimedDlgFunc(idAsString,ActionAsInteger,SuppValueAsLong)AsInteger
StaticStartTime
DimEndTime
DimvTimeoutValueasVariant
SelectCaseAction
Case1 'DialogboxInitialization
StartTime=Timer
IfStartTime+iTime>=86400Then
StartTime=86400-StartTime-iTime
EndIf
TimedDlgFunc=1
Case2 'Buttonpushedoranycontrolchanged(excepttypingintextorcombobox)
SelectCaseSuppValue
Case1
DlgEnd-1
Case2
DlgEnd0
CaseElse
TimedDlgFunc=0
EndSelect
Case3 'Changeintextorcomboboxcontents
TimedDlgFunc=1
Case4 'Changeofcontrolfocus
TimedDlgFunc=1
Case5 'Idlestate(return0topreventthisbeingcontinuallycalled)
EndTime=Timer
If(EndTime-StartTime)>=iTimeThen
DlgEnd-1
EndIf
vTimeoutValue=Format(iTime-(EndTime-StartTime),"#.#")
DlgTextDlgControlID("txtTimeValue"),CStr(vTimeoutValue)
TimedDlgFunc=1
EndSelect
EndFunction
FunctionSQAMsgBox(sMsgTextasString,OptionalvMsgCaptionasVariant,OptionalvTimeOutasVariant)asInteger
DimResultasInteger
DimTotalTimeAsInteger
DimsCmdTextasString
DimsTimeoutTextasString
DimvValueasVariant
IfIsMissing(vMsgCaption)Then
vMsgCaption="SQAMsgBox"
EndIf
IfIsMissing(vTimeOut)Then
vTimeOut=20 'seconds
EndIf
sTimeoutText="Timeout:
"
'-----
BeginDialogdlgMsgBox200,80,vMsgCaption,.TimedDlgFunc
GroupBox5,2,190,40,"",.grpMsgTxt
Text15,11,175,25,sMsgText,.txtMsgText
Text15,47,180,20,sCmdText,.txtCmdText
'--------------
Button20,60,40,14,"&OK",.btnOK
Button140,60,40,14,"&Cancel",.btnCancel
Text78,63,30,10,sTimeoutText,.txtTimeText
Text108,63,20,10,vTimeout,.txtTimeValue
EndDialog
'-----
DimTimedDlgAsdlgMsgBox
iTime=CInt(vTimeOut)
Result=Dialog(TimedDlg)
IfResult=2Then
SQAMsgBox=sqaFail
Else
SQAMsgBox=sqaPass
EndIf
EndFunction
Robot手工编写GUI脚本如何获取对象识别方法和属性
以计算器为例,下面的脚本是键盘输入“1+1=”,然后关闭计算器。
SubMain
DimResultAsInteger
StartApplication"C:
\WINNT\system32\calc.exe"
WindowSetContext,"Caption=计算器",""
InputKeys"1{+}1{ENTER}"
WindowCloseWin,"",""
EndSub
Robot提供了获取对象识别方法和属性的利器――Inspector。
通过Robottools-Inspector..打开。
现在使用SQAGetProperty命令获取1+1的结果值,并通过msgbox显示该值。
鼠标左键按住Inspectot工具栏上的“SelectObjcet”按钮,然后选择计算器的结果放开鼠标左键。
Inspectot中显示出对象的识别方法,鼠标左键点击工具栏上的“CopyrecognitionString”按钮拷贝识别方法,属性值通过选择Inspector左下角窗口中的Text属性,然后鼠标左键点击工具栏上的“Copy”按钮拷贝属性。
修改后的脚本如下:
SubMain
DimResultAsInteger
DimsumasVariant
StartApplication"C:
\WINNT\system32\calc.exe"
WindowSetContext,"Caption=计算器",""
InputKeys"1{+}1{ENTER}"
Result=SQAGetProperty("Type=Label;ObjectIndex=1","Text",sum)
msgboxsum
WindowCloseWin,"",""
EndSub
VU脚本是类C语言,区分大小写。
所以在获取识别方法和属性值时最好的方法就是使用Inspector。
自己编写脚本时,还有一个要注意的问题是窗口上下文,窗口上下文不正确会导致回放时找不到对象。
上面的脚本中WindowSetContext,"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_Scri
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Robot 使用 技巧 实用 函数 集合