2023-05-26 11:27:18來源:勵普網
(資料圖片僅供參考)
在WinRunner(以下簡稱WR)的實際項目中,對象不識別的情況非常頻繁,但如何去處理這些對象,可能有些朋友還不知道一些技巧,因此想借此文跟大家分享一些東西,希望對大家有用。
在做自動化測試項目時處理WR的不識別對象時,我一般按四步走:1加載相關插件2對象映射3自定義函數4自定義插件/建虛擬對象
首先說一下為什么要這么處理
1加載相關插件,這主要是因為加載插件的速度最快,效果也最好(優先級較高)
2對象映射,這主要是因為你可以牽一發而動全身,全局性很好(優先級排第二)
3自定義函數,這主要是因為自定義函數的靈活性比較大,可操作性強
4自定義插件,也就是通俗的講通過編寫DLL來實現工具的擴展,因為其技術難度比較大,而且效果也不是非常好(除非你有深厚的Windows底層編碼能力),但插樁類的自定義插件會好些,所以只有當前三個辦法失效的情況下才采用;而建虛擬對象,和自定義插件并列最后,主要是因為他的移植性不好,但如果前三種方法失效并擴展DLL自己有技術又有難度,那么我更推薦用虛擬對象。
然后我們來詳細說說如何進行操作:
1,加載相關插件在啟功WR時會出現一個插件選擇窗體,可以選擇你想要的插件,如果沒有,可以到WR的主界面的Tools“GeneralOptions“Startup里面的DisplayAdd-inManager,勾選上這個選項后就可以在下次打開WR時彈出插件加載提示了。
2,對象映射,在WR的主界面里選擇TOOLS-GuiMapConfiguration- Add- 將手型按鈕指向你所要映射的對象上后單擊,然后點OK,回到GuiMapConfiguration界面點Confige,到ConfigeClass界面對映射的對象進行一個配置,比如映射到的目標對象類,這里大家要注意一點:當前要進行映射的對象必須有目標對象類的基本特征,例如你不可以把一個編輯框映射到按扭上去;還有我們一般會把MSM-ID刪掉,因為他老是會變,導致腳本回放不成功。這里配置的主要原則是用盡量少的屬性描述對象,最后需要把GeneratedTSLScript里的內容拷貝到固定位置,比如你的測試工程的初始化代碼文件里,為什么要拷貝到那里呢?因為如果你不保存,以后你每次更換WR環境時都要再進行同類的配置,非常的煩瑣。
3,自定義函數這里主要分兩塊:相對坐標和鍵盤模擬,相對坐標的思想是取到特定對象的相對坐標,然后通過坐標對對象進行各種操作;而鍵盤模擬則是通過模擬敲擊鍵盤來實現對對象的操作(前提條件是對象必須可以被鍵盤操作到)。這里我給兩個實例:
#***********************************
#
#Description---------ThisfunctionisusedtoLEFTClickanObject
#
#Parameter-----------win---WindowName,obj---ObjectName
#
#ReturnValue-------None
#
#Tester----------------LantainWei
#
#***********************************
publicfunctionObj_LClick(inwin,inobj)
{
autoobj_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---------Thisfunctionisusedtoselectitemfromalist
#
#Parameter-----------obj---ObjectName,sItem---Itemwhichyouwantselected
#
#ReturnValue-------None
#
#Tester----------------LantainWei
#
#***********************************
publicfunctionList_Select(obj,sItem)
{
autosText;
obj_get_text(obj,sText);
while(match(sText, * sItem * )==0)
{
obj_type(obj, kDown
obj_get_text(obj,sText);
}
}
4,自定義插件該方法涉及到的方面比較多,這次就不細說,下次我再整理一下,再寫一篇關于自定義插件的文章,這次主要講一下虛擬對象的創建。具體的操作我就不細說,大家可以參看WR的幫助,這里我只想告訴大家注意一點:你要創建的虛擬對象必須有你虛擬成的類的基本特性,具體的解釋和映射相似。
最后我想說明的一點,不要盲目崇拜腳本的通用性,可移植性。比如有時你可以通過一個簡單的坐標設置就可以操作到對象,那就沒有必要再寫一大堆腳本來操作對象,雖然這樣做通用性和可移植性上去了,但維護性和成本也同樣上去了。自動化測試的目的降低成本,快速準確測試,任何背離這兩項原則的大家都可以放棄,所以以上方法大家還需要根據實際項目來進行對待。
雅思 托福 GRE IB SAT GMAT A-Level ACT 多鄰國英語測試 OSSD 英語四六級 出國英語 詞匯 AEAS 英語口語 商務英語 考研英語 青少英語 成人英語 個人提升英語 高中英語 劍橋英語 AP課程 一級建造師 二級建造師 消防工程師 消防設施操作員 BIM 造價工程師 環評師 監理工程師 咨詢工程師 安全工程師 建筑九大員 注冊電氣工程師 一級注冊建筑師 公路水運檢測 通信工程 裝配式工程師 二級注冊建筑師 PLC智能制造 智慧消防工程師 智慧建造工程師 全過程工程咨詢師 EPC工程總承包 碳排放管理師 應急救援員 初級會計師 中級會計師 注冊會計師(cpa) CFA ACCA CMA 基金從業 證券從業 會計證 初中級經濟師 薪稅師 會計實操 企業合規師 FRM 會計就業 教師資格 食品安全管理師 人力資源管理 鄉村規劃師 心理咨詢師 健康管理師 家庭教育指導師 普通話 公共營養師 物業經理 網絡主播 專利代理師 教師招聘 少兒編程 書法培訓 繪畫美術 音樂 舞蹈 棋類 國畫 樂器 擊劍 機器人編程 小孩子注意力訓練 兒童專注力 體適能 少兒小主播 信奧賽C++ 籃球 羽毛球 足球培訓 嵌入式培訓 軟件測試 Web前端 linux云計算 大數據 C/C++開發 電子商務 Java開發 影視后期 剪輯包裝 游戲設計 php 商業插畫 產品經理 Python photoshop UXD全鏈路 UI設計 室內設計 電商視覺設計 IT認證 PMP項目管理