[QTP] 描述性編程

1. 使用描述性編程的時機

錄製方式的測試腳本創建是最簡單和快捷的測試腳本開發方式,但是它太依賴測試對象庫,有時會有一些問題。比如相同的元素,部分屬性(比如名稱、標題等)是動態產生的,那麼在回放腳本中會導致找不到對象。如果用描述性編程編寫的測試腳本,QTP會使用測試腳本中給出的對象描述來查找對象,查找的不是對象庫,而是與測試程序運行時QTP爲其創建的臨時測試對象版本進行匹配,例如:

Browser("title:=百度一下*")

這裏通過正則表達式來匹配Browser的標題,即使窗口是動態生成的,但標題都是以“百度一下”開頭,所以可以用這個方式匹配所有標題以“百度一下”爲開頭的Browser對象。也可以組合幾個屬性來標識控件,例如:

Browser("title:=百度一下*", "index:=0")


2. 描述性編程的使用方法

這種直接描述的方式的一般使用格式如下:

TestObject("ProName1:=ProValue1", "...", "ProName2:=ProValue2")

通過直接指定測試對象的一個或多個PropertyName來描述控件,需要注意的是,屬性和屬性值之間要用":="分隔。

QTP還提供了一個Description對象,用於返回對象包含的屬性,例如:

Set MyDescription = Description.Create();
MyDescription("title").Value="百度一下*"
MyDescription("index").Value=0
Browser(MyDescription)

另外還可以使用ChildObjects方法來獲取某個父對象下面的所有子對象,例如:

Set childObjects = Browser("title:=百度一下*", "index:=0").ChildObjects()
msgBox childObjects.Count


3. 用編程方式創建檢查點

通過編程方式創建檢查點,對於不能使用普通檢查點對象的情況來說會非常有用。比如需要檢查的對象屬性沒有存儲在對象庫中,仍然可以自己創建檢查點,把檢查的結果寫入測試結果中。

GetROProperty用來獲取控件動態屬性,例如:

If Browser("title:=百度一下*", "index:=0").GetROProperty("openurl") = "about:blank" Then
  Reporter.ReportEvent micPass, "CheckBrowser = PASS ", "測試通過"
End If



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章