在自動(dòng)化測試當中,有時(shí)為了模擬真實(shí)效果,或者為了達到某種操作效果,那么勢必要把腳本參數化.那么一般的針對輸入值的參數化或者select選擇值的參數化,操作也比較容易,這里也不多說(shuō)了,直接把固定值換成變量就可以.鑒于上個(gè)星期有兩個(gè)朋友都問(wèn)到了針對某個(gè)對象的參數化,那么就來(lái)探討一下針對對象的參數化.
例:
Browser("Browser").Page("百度——全球最大中文搜索引擎").WebEdit("wd").Set "111"
Browser("Browser").Page("百度——全球最大中文搜索引擎").WebButton("百度搜索").Click
Browser("Browser").Page("百度搜索_111").Link("菜111 的QQ家園").Click
在這個(gè)例子中,我們的目的是把這個(gè)link對象給參數化掉.這里直接把對象名參數化掉,肯定是不行的.因為我們知道QTP識別對象依靠是這個(gè)對象在對象庫中的屬性和屬性值.而如果我們這里參數化成一個(gè)新的對象名,那么這個(gè)對象名是不存在于對象庫中的,那么勢必會(huì )造成在回放過(guò)程中不通過(guò),報對象庫中沒(méi)有這個(gè)對象的錯誤.所以我第一個(gè)想到的是先讓這個(gè)link對象脫離對象庫,讓它不用通過(guò)對象庫就能識別這個(gè)link對象,那么接下來(lái)只要直接換成變量就成功了.相信大家都看到過(guò)幫助里對描述性編程的說(shuō)明,通過(guò)把腳本改寫(xiě)成描述性編程的形式,可以讓QTP在執行腳本時(shí)不要再去依賴(lài)對象庫.直接把一些付有特征的屬性和屬性值放到腳本中,就能執行相應的操作.所以我們可以先把上面腳本改寫(xiě)成:
Browser("Browser").Page("百度——全球最大中文搜索引擎").WebEdit("wd").Set "111"
Browser("Browser").Page("百度——全球最大中文搜索引擎").WebButton("百度搜索").Click
Browser("Browser").Page("百度搜索_111").Link("text:=菜111 的QQ家園").Click
這樣表示后,再把這個(gè)對象在對象庫中的記錄給刪掉.重新運行腳本后,腳本依舊能正確執行.那么接下來(lái)的操作就方便了,直接把相應的固值換成一個(gè)變量即可.我們來(lái)這么操作:
Dim i
i="菜111 的QQ家園"
Browser("Browser").Page("百度——全球最大中文搜索引擎").WebEdit("wd").Set "111"
Browser("Browser").Page("百度——全球最大中文搜索引擎").WebButton("百度搜索").Click
Browser("Browser").Page("百度搜索_111").Link("text:="&i).Click
到這里整個(gè)操作過(guò)程就完成了.其實(shí)這只是一個(gè)方法,相信大家肯定還有其他方法,希望大家能留言說(shuō)說(shuō)自己的看法.當然如果這個(gè)對象的對象名有一定規律的話(huà),我們還可以考慮運用正則表達式的方法,也可以達到預期的效果.
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/