QTP描述性編程

描述性編程的兩種寫法

  • 第一種

首先對比一下相同的操作在對象庫編程中和在描述性編程中的不同

對象庫編程:
Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set "QTP 自動化測試"

描述性編程:
Browser("micClass:=Browser").Page("micClass:=Page").WebEdit("name:=wd").Set "QTP 自動化測試"

描述性編程的運作原理完全是和對象庫編程一致的,先是去描述一個最“上層”的對象"Browser“,對象名字寫好以後用上一對括號,然後在括號裏一次從左到右鍵入引號、一個屬性名稱、一個冒號、一個等號、引號。
這個就是第一種形式,即:對象名("屬性名:=屬性值")
一層一層往下描述,直到定位到最終想要操作的對象,最後給它一個方法。

1.描述性編程就是將原對象庫編程中括號內的“對象名”換成一種描述性語言,它描述的仍是這個對象,只不過不再是封裝好的現成的對象,而是需要現場描述(封裝)。

2.描述性編程中,可以同時描述多個屬性,多個屬性用英文狀態下的逗號隔開,可以描述的屬性必須是QTP內置的

3.描述性編程中,如果父對象描述了,子對象則一定要描述

  • 第二種

第二種描述性編程,使用Description對象

使用該對象可以返回包含一組Property對象的Properties集合對象。
Property對象由屬性名和值組成。
可以在語句中指定用返回的Properties集合來代替對象名

要創建Properties集合,需要先創建Properties對象,使用以下語法進行:

Set objDescription=Description.Create()

創建完畢後,就可以在運行會話期間在Properties對象中添加、編輯、刪除或檢索屬性和屬性值了。即,將對象的屬性極其屬性值的描述封裝在一個特殊的Description對象中。

Browser("micClass:=Browser").Page("micClass:=Page").WebEdit("name:=wd").Set "QTP 自動化測試"

以上語句可以通過Description對象來實現同樣的功能,參見下面這段代碼:

Set ObjBrowser=Description.Create()
ObjBrowser("micClass").Value="Browser"

Set ObjPage=Description.Create()
ObjPage("micClass").Value="Page"

Set ObjWebEdit=Description.Create()
ObjWebEdit("html tag").Value="INPUT"
ObjWebEdit("name").Value="wd"

Browser(ObjBrowser).Page(ObjPage).WebEdit(ObjWebEdit).Set "QTP 自動化測試"

Set ObjWebEdit=Nothing
Set ObjPage=Nothing
Set ObjBrowser=Nothing

總結,
第一種方法更適合應用於普通腳本中,當在對象庫編程中無法完成任務的時候,描述性編程臨時加上一句,這樣做顯得更加直觀,代碼數量也更加少。但是很明顯的缺陷就是無法做到複用;
第二種描述性編程的方式更適合應用於基於框架的腳本中,從表象上看雖然比前者會多寫幾句代碼,但是這種方式的複用性遠遠優於前者;
具體選取哪一種方式都應按照項目的實際情況界定。

描述性編程例子:

假定有這樣一個場景,頁面中有幾百個輸入框,此時如果逐一將這幾百個對象添加到對象庫是非常繁瑣的,不科學的,使用描述性編程則是一個明智的選擇。但是也不能逐一描述,因爲效率同樣的低。
在這種情況下,就可以用描述性編程來遍歷頁面中的對象,從而最終完成艱鉅的任務。
百度的高級搜索頁面就是一個比較典型的例子,頁面中有很多輸入框,http://www.baidu.com/gaoji/advanced.html
現在要對這些輸入框做操作,在每個WebEdit中輸入“QTP 自動化測試”這段字符串,實現腳本如下:

'打開網站頁面
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

發佈了28 篇原創文章 · 獲贊 5 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章