描述性编程(DP):不需要将对象添加到对象库中,其可描述的属性必须是QTP内置的属性,且都是封装接口的属性,不是自身接口的属性
有两种编程方式:
第一种:对象名(“属性名:=属性值”)
Browser("micClass:=Browser").Page("micClass:=Page")._
WebEdit("html tag:=INPUT","name:=wd").Set "测试"
Browser("micClass:=Browser").Page("micClass:=Page").WebButton("name:=百度一下").Click
第二种:使用Description对象。使用该对象可以返回包含一组Property对象的Properties集合,Property对象由属性名和值组成,然后可以在语句中指定用Properties集合代替对象名
Set ObjBrowser=Description.Create()
ObjBrowser("micClass").Value="Browser"
Set ObjPage=Description.Create()
ObjPage("micClass").Value="Page"
Set ObjWebEdit=Description.Create()
ObjWebEdit("name").Value="wd"
ObjWebEdit("html tag").Value="INPUT"
Browser( ObjBrowser ).Page( ObjPage ).WebEdit( ObjWebEdit ).Set "description测试"
'最后需要记住释放对象'
Set ObjWebEdit=Nothing
Set ObjPage=Nothing
Set ObjBrowser=Nothing
描述性编程一般情况下适用于同一界面出现很多个相同类别的控件元素中,或者通过遍历对象完成对N个同类控件的操作
Set baidu=Browser("micClass:=Browser").Page("micClass:=Page")
Print baidu.Link("name:=糯米").Exist
'存在该链接打印true,反之打印false'
With baidu
Print .Link("text:=贴吧").Exist
Print .Link("name:=新闻").Exist
Print .Link("name:=地图").Exist
Print .Link("name:=视频").Exist
End With
例如下图中的百度高级搜索含有多个文本框
Set all_Edit=Description.Create()
all_Edit("micClass").value="WebEdit"
Set all_Edits=Browser("micClass:=Browser").Page("micClass:=Page").ChildObjects(all_Edit)
For Iterator = 0 To all_Edits.count-1 Step 1
Set Edit=all_Edits.item(Iterator)
Edit.set "自动化测试"
Next
Set Edit=nothing
Set all_Edits=nothing
Set all_Edit=nothing
若是已知元素命名编号规则,可以通过写个循环,完成动态的对对象进行识别
For Iterator = 1 To 6 Step 1
If Iterator<>5 Then
Browser("micClass:=Browser").Page("micClass:=Page").WebEdit("name:=q"& Iterator).set "ABCD测试"
End If
Next