1. MsgBox的使用
fBrowser("Mercury Tours").Page("Welcome to Mercury").Image("Search Flights").ExistThen
|
MsgBox"The Image Exists." |
MsgBox"Cannot find the Image." |
'Msgbox DataTable.value("Order")
Window("Flight Reservation").WinEdit("Order No:").Output CheckPoint("Order No:")
Msgbox Parameter("nn")
2.Description 的使用
Set nline = Description.Create()
online("src").Value = "http://www.51testing.com/images/new/logo.gif"
Set nlineCo = Browser("51Testing软件测试网-中国软件测试人的精神家园").Page("51Testing软件测试网-中国软件测试人的精神家园").ChildObjects(online)
onlineCoCount = onlineCo.Count
If nlineCoCount = 0 Then
MsgBox "这个页面没有打开"
wait 2
else
Msgbox "这个页面正常的打开了"
' Desktop.CaptureBitmap "d:\test.png",true
'SendMail "XXXXX@QQ.com","XXXXX","XXXXX","XXXXX","XXXXX","XXXXX@163.com"
你可以使用Description对象,来返回一个Properties collection对象,该集合对象包括一系列Property对象。每个Property对象由Property name及value组成。
然后在语句中用Properties collection对象替代被测对象的名称。
注意:默认情况下,所有被添加到Properties collection中的Property对象的值被当成正则表达式对待。因此,当Property Value中包含正则表达式的特殊字符(如*,?,+)时,要在特殊字符前使用“\”符号。
你也可以在Properties Collection中,将RegularExpression属性值设置为False,这样即使在Property Value中用到了正则表达式的特殊字符,也会被视为普通字符。更多信息参考QuickTest Professional Object Model Reference的Utility部分。
要创建Properties collection,使用Dexcription Create语句,语法如下:
Set MyDescription = Description.Create()
一旦创建了Properties 对象(例如上例中的Mydescription),在运行过程中,你就可以使用语句向Properties对象添加、编辑、移除或获取属性及属性值。这使你在运行过程中可以动态的决定:在对象描述中使用哪些属性、使用多少属性。
当你将一系列的属性及属性值加入到Properties collection中以后,你就可以在脚本语句中用Properties对象替代被测对象的名称。
例如,有如下语句:
Window("Error").WinButton("text:=OK", "width:=50").Click
通过改造,成为:
Set MyDescription = Description.Create()
MyDescription("text").Value = "OK"
MyDescription("width").Value = 50
Window("Error").WinButton(MyDescription).Click
注:当为一个ActiveX对象创建编程性描述时,如果该对象的run-time对象是windowless的(即没有相应的window handel),就必须在属性描述中将它的windowless property设置为Ture。
例如:
Set ButDesc = Description.Create
ButDesc("ProgId").Value = "Forms.CommandButton.1"
ButDesc("Caption").Value = "OK"
ButDesc("Windowless").Value = True
Window("Form1").AcxButton(ButDesc).Click
获取Child Objects(Retrieving Child Objects)
通过ChildObjects方法,可以获取指定对象下的所有子对象,或只获取那些符合编程性描述的子对象。为了获取某对象的子对象的子集,首先需创建一个description对象,然后在该对象的descriptions collection中添加一系列的属性及属性值,这些属性及属性值必须符合子集的要求。
注意:你必须使用Description对象来为ChildObjects描述参数 创建编程性描述,不能使用property:=value语法直接将编程性描述添加到参数中。
一旦你已经在description对象中“built”了描述,就可以使用下面的语法来获取与描述匹配的子对象:
Set MySubSet=TestObject.ChildObjects(MyDescription)
例如:下面的语句使QTP选中网页中的所有选择框:
Set MyDescription = Description.Create()
MyDescription("html tag").Value = "INPUT"
MyDescription("type").Value = "checkbox"
Set Checkboxes = Browser("Itinerary").Page("Itinerary").ChildObjects(MyDescription)
NoOfChildObjs = Checkboxes.Count
For Counter=0 to NoOfChildObjs-1
Checkboxes(Counter).Set "ON"
Next
For more information about the ChildObjects method, refer to the QuickTest Professional Object Model Reference
3.
碰到了个问题,QTP怎么用描述性编程去定位网页中弹出的窗口?
你用OBJECT SPY 把那个窗口捕获,然后观测它的一些常量值如:CLASSNAME SWFTYPENAME 等等
SET DESC = DESCRIPTION.CREATE()
DESC("CLASSNAME ").VALUE = "AAABBBCCC"
DESC("SWFTYPENAME ").VALUE = "TTTDDDUUU"
DESC("CLASS NAME ").VALUE = "SWFWINDOW"
IF OBJ.SWFOBJECT(DESC).EXIST(1) THEN
MSGBOX "I AM HERE"
END IF
End If