WinRunner處理不識(shí)別對(duì)象的四種方法

字號(hào):

在WinRunner(以下簡(jiǎn)稱WR)的實(shí)際項(xiàng)目中,對(duì)象不識(shí)別的情況非常頻繁,但如何去處理這些對(duì)象,可能有些朋友還不知道一些技巧,因此想借此文跟大家分享一些東西,希望對(duì)大家有用。
    在做自動(dòng)化測(cè)試項(xiàng)目時(shí)處理WR的不識(shí)別對(duì)象時(shí),我一般按四步走:1 加載相關(guān)插件 2 對(duì)象映射 3 自定義函數(shù) 4 自定義插件/建虛擬對(duì)象
    首先說一下為什么要這么處理,1 加載相關(guān)插件,這主要是因?yàn)榧虞d插件的速度最快,效果也(優(yōu)先級(jí)) 2 對(duì)象映射,這主要是因?yàn)槟憧梢誀恳话l(fā)而動(dòng)全身,全局性很好(優(yōu)先級(jí)排第二) 3 自定義函數(shù),這主要是因?yàn)樽远x函數(shù)的靈活性比較大,可操作性強(qiáng) 4 自定義插件,也就是通俗的講通過編寫DLL來實(shí)現(xiàn)工具的擴(kuò)展,因?yàn)槠浼夹g(shù)難度比較大,而且效果也不是非常好(除非你有深厚的Windows底層編碼能力),但插樁類的自定義插件會(huì)好些,所以只有當(dāng)前三個(gè)辦法失效的情況下才采用;而建虛擬對(duì)象,和自定義插件并列最后,主要是因?yàn)樗囊浦残圆缓?,但如果前三種方法失效并擴(kuò)展DLL自己有技術(shù)又有難度,那么我更推薦用虛擬對(duì)象。
    然后我們來詳細(xì)說說如何進(jìn)行操作:
    1 加載相關(guān)插件 在啟功WR時(shí)會(huì)出現(xiàn)一個(gè)插件選擇窗體,可以選擇你想要的插件,如果沒有,可以到WR的主界面的Tools\General Options\Startup 里面的Display Add-in Manager,勾選上這個(gè)選項(xiàng)后就可以在下次打開WR時(shí)彈出插件加載提示了。
    2 對(duì)象映射,在WR的主界面里選擇TOOLS-Gui Map Configuration->Add->將手型按鈕指向你所要映射的對(duì)象上后單擊,然后點(diǎn)OK,回到Gui Map Configuration界面點(diǎn)Confige,到Confige Class界面對(duì)映射的對(duì)象進(jìn)行一個(gè)配置,比如映射到的目標(biāo)對(duì)象類,這里大家要注意一點(diǎn):當(dāng)前要進(jìn)行映射的對(duì)象必須有目標(biāo)對(duì)象類的基本特征,例如你不可以把一個(gè)編輯框映射到按扭上去;還有我們一般會(huì)把MSM-ID刪掉,因?yàn)樗鲜菚?huì)變,導(dǎo)致腳本回放不成功。這里配置的主要原則是用盡量少的屬性描述的對(duì)象,最后需要把Generated TSL Script里的內(nèi)容拷貝到固定位置,比如你的測(cè)試工程的初始化代碼文件里,為什么要拷貝到那里呢?因?yàn)槿绻悴槐4?,以后你每次更換WR環(huán)境時(shí)都要再進(jìn)行同類的配置,非常的煩瑣。
    3 自定義函數(shù) 這里主要分兩塊:相對(duì)坐標(biāo)和鍵盤模擬,相對(duì)坐標(biāo)的思想是取到特定對(duì)象的相對(duì)坐標(biāo),然后通過坐標(biāo)對(duì)對(duì)象進(jìn)行各種操作;而鍵盤模擬則是通過模擬敲擊鍵盤來實(shí)現(xiàn)對(duì)對(duì)象的操作(前提條件是對(duì)象必須可以被鍵盤操作到)。這里我給兩個(gè)實(shí)例:
    #***********************************
    #
    # Description---------This function is used to LEFT Click an Object
    #
    # Parameter-----------win---WindowName,obj---ObjectName
    #
    # Return Value-------None
    #
    # Tester----------------LantainWei
    #
    #***********************************
    public function Obj_LClick(in win,in obj)
    {
    auto obj_width,obj_height;
    set_window(win);
    obj_get_info(obj,"width",obj_width);
    obj_get_info(obj,"height",obj_height);
    obj_mouse_click(obj,int(obj_width/2),int(obj_height/2),LEFT);
    }
    #***********************************
    #
    # Description---------This function is used to select item from a list
    #
    # Parameter-----------obj ---ObjectName, sItem ---Item which you want selected
    #
    # Return Value-------None
    #
    # Tester----------------LantainWei
    #
    #***********************************
    public function List_Select(obj,sItem)
    {
    auto sText;
    obj_get_text(obj,sText);
    while(match(sText,"*"&sItem&"*")==0)
    {
    obj_type(obj,"");
    obj_get_text(obj,sText);
    }
    }
    4 自定義插件 該方法涉及到的方面比較多,這次就不細(xì)說,下次我再整理一下,再寫一篇關(guān)于自定義插件的文章,這次主要講一下虛擬對(duì)象的創(chuàng)建。具體的操作我就不細(xì)說,大家可以參看WR的幫助,這里我只想告訴大家注意一點(diǎn):你要?jiǎng)?chuàng)建的虛擬對(duì)象必須有你虛擬成的類的基本特性,具體的解釋和映射相似。
    最后我想說明的一點(diǎn),不要盲目崇拜腳本的通用性,可移植性。比如有時(shí)你可以通過一個(gè)簡(jiǎn)單的坐標(biāo)設(shè)置就可以操作到對(duì)象,那就沒有必要再寫一大堆腳本來操作對(duì)象,雖然這樣做通用性和可移植性上去了,但維護(hù)性和成本也同樣上去了。自動(dòng)化測(cè)試的目的降低成本,快速準(zhǔn)確測(cè)試,任何背離這兩項(xiàng)原則的大家都可以放棄,所以以上方法大家還需要根據(jù)實(shí)際項(xiàng)目來進(jìn)行對(duì)待。
    大家如果對(duì)以上內(nèi)容有任何問題或建議,歡迎與本人交流,我的MSN是lantian.wei@hotmail.com,QQ是2368-35793。