QTP使用心得——新的開始

發表于:2012-07-26來源:Csdn作者:tulituqi點擊數: 標簽:qtp
最近換了新的工作,做外包,搞自動化測試,主要是用QTP和QC??梢蚤L期使用QTP了,工作用的是9.0的,家里是9.2的,有一些不一致。比如9.2有個腳本編寫工具,9.0沒有。

  最近換了新的工作,做外包,搞自動化測試,主要是用QTP和QC??梢蚤L期使用QTP了,工作用的是9.0的,家里是9.2的,有一些不一致。比如9.2有個腳本編寫工具,9.0沒有。

  我會抽空把自己的心得寫上來,老手路過就好了,也許我這些東東的你們都知道了。這都主要是工作中遇到的問題以及解決辦法,希望碰到和我同樣問題的朋友也能順利解決問題。目前主要在web應用上。

  QTP心得(都是自己的親身經歷)

  首先介紹一個不錯的自動化框架——SAFFRON。下面第一個心得就是通過研究這個框架得來的。用msgbox顯示出框架執行的語句,發現原來他都是用下面的寫法來定位控件的。有興趣的可以去學習一下,網上能搜到的。

  1.使用屬性定位控件(其實專業的名字叫描述式編程)

  大家錄制腳本后可能會得到類似下面的內容:

  Browser("IE").Page("page的名字").WebEdit("文本框").Set "123"

  實際中這些控件的名字可能是變化的,WebEdit可能變得少些,WebElement變的多些?;蛘邲]法錄制,需要自己手寫的,不妨試一下用屬性值來定位:

  Browser("micclass:=Browser","title=IE").Page("micclass:=Page","name:=page的名字").WebEdit("micclass:=WebEdit","name:=屬性值").Set "123"

  在我印象里,幾乎所有的控件都可以這樣來寫,注意就是這里需要寫的是 := (為顯示清晰用中文模式輸入的符號),這里用到的是冒號等號,別問我為啥,我也不知道。 基本上就是 控件名("micclass:=控件名","屬性名:=屬性值") 這樣來定位。

  2.明明頂級對象名字不同,但用對象庫添加的時候卻添加到另一個頂級對象中

  不知道大家有沒有這樣的經歷,錄制腳本的時候很正常,執行的時候卻提示無法找到對象。這時候用Object Spy去查看那個控件,看到可能是頂級的Browser名字和腳本的不一樣,手動去添加頂級的Browser也加不進去。他一般是把Page往下的加在另一個Browser下面。已經有的就叫Browser1吧,你想加的那個叫Browser2,這樣避免誤解。

  解決辦法:這個問題主要是對象庫默認的屬性太少,在你查看對象庫的時候,右邊會有這個對象的屬性,出現上面的情況通常是對象庫的Browser1默認的幾個屬性的值和Browser2的相同,于是我推測是QTP默認這兩個是同一個對象。

  建議這時候用Object Spy查看一下Browser2的屬性值,肯定有一個和Browser1不同的,這是我們先在對象庫里,給Browser1增加一下那個不同的屬性,然后再添加Browser2(一般選Page添加就可以,或者加你要的控件,不然直接選Browser級添加會弄進去很多沒用的東東),這樣就順利加進來了。完成后,建議把你加的那個屬性值刪除,有時候不刪除也沒事,不過我發現那些用Browser1的腳本會出現找不到對象的情況,刪除新增的屬性值后就沒事了。

  3.添加text output value的一個妙法

  也許有人知道,不過我是無意中發現的。在錄制腳本的時候可以添加text output value,但是對應的那個控件的值內容卻很多,你只想要一部分。如果錄制后去添加標準輸出值,沒法取出你要的值,只能全取到,然后截取字符串。

  text output value只能在錄制的時候添加,添加后可以有一個選擇text after和text before的選項,text after是你要的字符串之后的字符,text before是你要的字符串前面的字符,有了這兩個,就可以準確取到你需要那部分內容。但這是直接取到的還是你的那個控件整個內容的前后字符串,有時候也可能會搞混text after和text before,還要去調試。

  例如:有如下顯示(用戶名為qitao。為某個WebElement的值):

  添加用戶成功:用戶名為qitao。

  直接添加text output value,可能會得到text before為 "添加用戶成功:",text after為 "",很顯然,你得到的值就是 "用戶名為qitao。"。但是我只想取到 qitao 這個值,這時候你可以先用鼠標選中qitao,然后再添加text output value,點擊選中的qitao,你得到的text before為 "用戶名為",text after為 "。" ,有時候可能內容會更多,你可以自己去掉一些多余的,總之這回很直接就取到了你要的這個值。

  給剛剛學習QTP的人的建議:

  1、基礎肯定要掌握

  2、建議多了解action重用和參數化部分的內容,因為我們做自動化案例的時候都是要做成API庫,說白了就是參數化的可重用action,這樣案例直接調用多個action就可以了。

  3、有能力的建議多去熟悉vbs,QTP腳本就是用vbs來編寫的。

  4、學習編程思想。比如我們做API庫,如果學過編程,把API庫也就是參數化的可重用action可以當作是函數,action的參數就是函數的輸入輸出參數,這樣就很容易理解了。

  今天就先寫這么多吧,歡迎大家提意見,也歡迎與我交流,在這里留言或給我發郵件,我只要看到肯定會回復的。目前工作原因白天無法上網。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97