另外,当使用Browser ("CreationTime:=-1")的时候,表明当前有且仅有一个浏览器窗口,当只需要一个浏览器的时候,可以使用这个方法来作为判断依据,脚本如下所示:
objBrowser = Browser ("CreationTime:=-1").Exist (0)
If objBrowser Then
Msgbox "只存在一个浏览器窗口"
else
Msgbox "存在0个或多个浏览器窗口"
End If
使用描述性编程通过遍历对象完成N个同类控件的操作。
假设有这么一个场景,页面中有几百个输入框
'打开网站页面
SystemUtil.Run "C:\Program Files\Internet Explorer\IEXPLORE.EXE",_
"http://www.baidu.com/gaoji/advanced.html"
'描述对象 -- WebEdit
Set all_oEdit = Description.Create
all_oEdit("micClass").value = "WebEdit"
'为WebEdit找父对象和祖父对象,并将所有对象“包装”在一起
Set all_oEdits = Browser("micClass:=Browser").Page("micClass:=Page")._
ChildObjects(all_oEdit)
'遍历页面中的WebEdit对象,找到一个就输入一串指定的字符串
For i = 0 to all_oEdits.count - 1
Set oEdit = all_oEdits.item(i)
oEdit.Set "QTP自动化测试技术领航"
Next
'最后记得释放所有设置的对象
Set oEdit = Nothing
Set all_oEdits = Nothing
Set all_oEdit = Nothing
1描述对象给micClass赋值“WebEdit”
2寻找父对象和祖父对象,将所有的对象包装在一起
3.遍历所有的对象赋值一次赋值须另外定义变量
4释放对象
订票系统,3名乘客:
For i = 0 to 3
Browser("Find a Flight:")._
Page("Book a Flight:").WebEdit("name:=passFirst"& i).Set "FirstName"
Browser("Find a Flight:")._
Page("Book a Flight:").WebEdit("name:=passLast"& i).Set "LastName"
Next
对象库的优势。
(1)可以通过Complete Word、“F7”等多个方式进行高效编程。这个特性描述性编程没有。
(2)对象库编程有一个比较好的特性,假设脚本中引用了同一个对象10多次,这个对象的名字之前取得不是太出色,项目经理要求改名。此时不需要改10多次,只需要进入对象库,对这个对象进行更名,脚本便会批量自动更新,很高效!这个特性描述性编程也没有。
(3)对象库编程不容易打错字,因为有Complete Word,想打错字都难。但是,描述性编程没有Complete Word,所以,打错字是家常便饭。关键是,对于一个新测试员来说,他不可能有敏锐的分析手段,往往因为这么一个小错别字会浪费很多时间。其实只是一个错别字而已,往往最后被误解成脚本发生了错误,无论怎么调试都看不出来。
描述性编程的优势。
(1)不用维护庞大的对象库,不过需要维护庞大的代码。所以这算是优势还是劣势?请读者感悟。作者在此提一句,其实在对象库功能做得如此智能的情况下,维护好对象库不难,只要根据在“对象库”那个章节中介绍的一些法则,如命名规范等就可以管理好对象库。
(2)描述性编程可以完成一些特殊的需求