Gui控件的識(shí)別方法和裝置制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種GUI控件的識(shí)別方法和裝置,其中,GUI控件的屬性信息被預(yù)先錄制并具有唯一標(biāo)識(shí),屬性信息包括:GUI控件的父窗口的標(biāo)題和/或類(lèi)名,GUI控件相對(duì)于父窗口的位置坐標(biāo)以及GUI控件對(duì)應(yīng)的第一圖像。方法包括:根據(jù)屬性信息中的父窗口標(biāo)題和/或父窗口類(lèi)名查找GUI控件所在的父窗口;根據(jù)GUI控件相對(duì)于父窗口的位置坐標(biāo),截取預(yù)設(shè)尺寸和位置的第二圖像;計(jì)算第二圖像與第一圖像之間的相似度并根據(jù)相似度對(duì)GUI控件進(jìn)行識(shí)別。根據(jù)該方案,能夠準(zhǔn)確識(shí)別出非標(biāo)準(zhǔn)控件,并且,這種識(shí)別方法可直接封裝為接口,適合用于GUI自動(dòng)化測(cè)試中。
【專(zhuān)利說(shuō)明】GUI控件的識(shí)別方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,具體涉及一種⑶I控件的識(shí)別方法和裝置。
【背景技術(shù)】
[0002] 隨著軟件技術(shù)的飛速發(fā)展和軟件規(guī)模的不斷擴(kuò)大,基于圖形用戶界面軟件越來(lái)越 多,借助自動(dòng)化軟件測(cè)試工具來(lái)對(duì)GUI軟件進(jìn)行自動(dòng)化測(cè)試獲得了越來(lái)越廣泛的應(yīng)用。
[0003] 出于各方面的因素,越來(lái)越多的軟件界面中開(kāi)始使用自繪控件或第三方控件,然 而現(xiàn)階段很多技術(shù)對(duì)GUI控件的識(shí)別存在很大的局限性,一般僅僅能識(shí)別Windows標(biāo)準(zhǔn)控 件,通過(guò)已有的Windows API接口獲取界面元素的各種屬性信息,而對(duì)于大部分第三方控件 識(shí)別率都不高,目前的一些GUI自動(dòng)化測(cè)試框架也都存在開(kāi)發(fā)用例成本高,不易于擴(kuò)展,當(dāng) Gn界面發(fā)生變化時(shí)維護(hù)成本高等缺點(diǎn),這給GUI自動(dòng)化測(cè)試帶來(lái)了更多的挑戰(zhàn)。
[0004] 在GUI自動(dòng)化測(cè)試中,很多軟件體系都采用錄制回放技術(shù)。這種技術(shù)要求測(cè)試者 通過(guò)鼠標(biāo)和鍵盤(pán)的點(diǎn)擊進(jìn)行工作,腳本記錄事件,然后以自動(dòng)化測(cè)試的方式進(jìn)行回放。記 錄下來(lái)的測(cè)試腳本必須經(jīng)過(guò)編輯和調(diào)試之后插入驗(yàn)證和檢查點(diǎn)。產(chǎn)生的腳本通常是硬編 碼,需要測(cè)試人員對(duì)腳本進(jìn)行編輯以及參數(shù)化操作。同時(shí),界面元素屬性的任何變化都會(huì)影 響腳本的運(yùn)行,有時(shí)甚至需要重新錄制腳本。此外,還有基于數(shù)據(jù)驅(qū)動(dòng)的GUI自動(dòng)化測(cè)試, 但其僅支持腳本錄制并要獨(dú)立維護(hù)測(cè)試數(shù)據(jù)和對(duì)應(yīng)關(guān)系,以及基于關(guān)鍵字的GUI自動(dòng)化測(cè) 試,但其關(guān)鍵字的維護(hù)成本較高。
【發(fā)明內(nèi)容】
[0005] 鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上 述問(wèn)題的GUI控件的識(shí)別方法和裝置。
[0006] 根據(jù)本發(fā)明的一個(gè)方面,提供了一種GUI控件的識(shí)別方法,其中,GUI控件的屬性 信息被預(yù)先錄制并具有唯一標(biāo)識(shí),屬性信息包括:GUI控件的父窗口的標(biāo)題和/或類(lèi)名,GUI 控件相對(duì)于父窗口的位置坐標(biāo)以及⑶I控件對(duì)應(yīng)的第一圖像;
[0007] 識(shí)別方法包括:
[0008] 根據(jù)屬性信息中的父窗口標(biāo)題和/或父窗口類(lèi)名查找GUI控件所在的父窗口;
[0009] 根據(jù)⑶I控件相對(duì)于父窗口的位置坐標(biāo),截取預(yù)設(shè)尺寸和位置的第二圖像;
[0010] 計(jì)算第二圖像與第一圖像之間的相似度并根據(jù)所述相似度對(duì)所述GUI控件進(jìn)行 識(shí)別。
[0011] 根據(jù)本發(fā)明的另一方面,提供了一種⑶I控件的識(shí)別裝置,其中,⑶I控件的屬性 信息被預(yù)先錄制并具有唯一標(biāo)識(shí);
[0012] 裝置包括:
[0013] ⑶I控件錄制模塊,適于預(yù)先錄制⑶I控件的屬性信息,屬性信息包括:GUI控件的 父窗口的標(biāo)題和/或類(lèi)名,Gn控件相對(duì)于父窗口的位置坐標(biāo)以及⑶I控件對(duì)應(yīng)的第一圖 像;
[0014] 查找模塊,適于根據(jù)屬性信息中的父窗口標(biāo)題和/或父窗口類(lèi)名查找⑶I控件所 在的父窗口;
[0015] 圖像截取模塊,適于根據(jù)⑶I控件相對(duì)于父窗口的位置坐標(biāo),截取預(yù)設(shè)尺寸和位 置的第二圖像;
[0016] 識(shí)別模塊,適于根據(jù)⑶I控件相對(duì)于父窗口的位置坐標(biāo),截取預(yù)設(shè)尺寸和位置的 第二圖像。
[0017] 根據(jù)本發(fā)明的GUI控件的識(shí)別方法和裝置,預(yù)先錄制能夠唯一確定GUI控件的, 包含⑶I控件圖形元素的圖像、父窗口名稱(chēng)、⑶I控件相對(duì)于父窗口的坐標(biāo)等的屬性信息, 在識(shí)別過(guò)程中根據(jù)父窗口名稱(chēng)和坐標(biāo)確定⑶I控件的位置,截取第二圖像,根據(jù)第二圖像 與屬性信息中的包含GUI控件圖形元素的圖像來(lái)識(shí)別GUI控件。根據(jù)該方案,能夠?qū)?biāo)準(zhǔn) Gn控件和非標(biāo)準(zhǔn)的CTI控件進(jìn)行識(shí)別,具有普遍的通用性。并且,上述測(cè)試方法易于封裝 為接口函數(shù),編寫(xiě)測(cè)試用例時(shí),只需要根據(jù)待測(cè)的界面和測(cè)試流程,對(duì)導(dǎo)出接口進(jìn)行重新組 合即可,從而實(shí)現(xiàn)了測(cè)試數(shù)據(jù)和測(cè)試腳本的分離。而且,用例的編寫(xiě)無(wú)需開(kāi)發(fā)人員了解程序 開(kāi)發(fā)知識(shí),操作便捷。當(dāng)界面變化時(shí)只需重新錄制⑶I控件并重新組合導(dǎo)出接口即可,易于 維護(hù),錄制過(guò)程簡(jiǎn)單,只要將鼠標(biāo)放在關(guān)注的圖像位置,設(shè)定半徑,就很容易自動(dòng)獲取這些 屬性信息。
[0018] 上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段, 而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠 更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0019] 通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通 技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明 的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0020] 圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的GUI控件的識(shí)別方法的流程圖;
[0021] 圖2示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的GUI控件的識(shí)別方法的流程圖;
[0022] 圖3示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的GUI控件的識(shí)別方法的流程圖;
[0023] 圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的GUI控件的識(shí)別裝置的結(jié)構(gòu)框圖;
[0024] 圖5示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的GUI控件的識(shí)別裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0025] 下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi) 的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例 所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍 完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0026] 首先,簡(jiǎn)要介紹⑶I控件的識(shí)別和測(cè)試。⑶I是以圖形方式顯示的計(jì)算機(jī)操作用戶 界面。一個(gè)最簡(jiǎn)單的手工⑶I識(shí)別和測(cè)試過(guò)程就是首先人眼識(shí)別⑶I界面上的某一個(gè)圖形 元素,然后對(duì)此元素進(jìn)行相應(yīng)的鼠標(biāo)或鍵盤(pán)操作,查看操作后的Gn界面是否符合預(yù)期???見(jiàn)GUI控件測(cè)試中涉及兩個(gè)步驟,先要識(shí)別出GUI控件,然后對(duì)GUI控件進(jìn)行預(yù)設(shè)的操作。 其中,對(duì)Gn控件的操作是容易模擬的,而Gn控件的自動(dòng)識(shí)別是比較困難的。對(duì)于Windows 標(biāo)準(zhǔn)控件的識(shí)別較為容易,可以直接使用Windows API的方式,例如,使用FindWindow, EnumWindow,GetWindowText,GetWindowRect等函數(shù)獲取GUI控件的句柄,文本,位置等信 息,進(jìn)而實(shí)現(xiàn)對(duì)GUI控件的識(shí)別。
[0027] 對(duì)于非標(biāo)準(zhǔn)的⑶I控件,上述方法并不適用。這時(shí),可以采用基于MSAA,基于坐標(biāo) 的方法等進(jìn)行GUI控件的識(shí)別。但上述方法有些較為繁瑣,開(kāi)發(fā)復(fù)雜,適用范圍非常有限, 容易受到界面變化的影響,維護(hù)成本高。
[0028] 圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的GUI控件的識(shí)別方法的流程圖,如圖1所示, 方法包括:
[0029] 步驟S110,預(yù)先錄制⑶I控件的屬性信息。
[0030] 錄制的⑶I控件的屬性信息包括:GUI控件的父窗口的標(biāo)題和/或類(lèi)名,⑶I控件 相對(duì)于父窗口的位置坐標(biāo)以及⑶I控件對(duì)應(yīng)的第一圖像。
[0031] 以360瀏覽器的安裝窗口中的⑶I控件為例,安裝過(guò)程中首先涉及"開(kāi)始安裝"GUI 控件。該⑶I控件的父窗口標(biāo)題就是安裝窗口的窗口名,例如"360瀏覽器安裝"。而⑶I 控件相對(duì)于父窗口的位置以及控件的圖形元素一般是不變的。因此,根據(jù)上述錄制的屬性 信息能夠唯一確定一個(gè)GUI控件。當(dāng)然,也可以選擇錄制父窗口的類(lèi)名,句柄等,或窗口名 稱(chēng)與類(lèi)名的組合。
[0032] ⑶I控件的第一圖像至少包括部分⑶I控件的圖形元素,例如,對(duì)上述的"開(kāi)始安 裝"控件,其圖形元素顯示為一個(gè)帶有"開(kāi)始安裝"字樣的按鈕。第一圖像可通過(guò)截圖方式 獲取,截取帶有完整的或一部分字樣的圖像。
[0033] ⑶I控件相對(duì)于父窗口位置的坐標(biāo)可以是⑶I控件圖像元素上任一點(diǎn)相對(duì)于父窗 口的坐標(biāo)。例如,以父窗口的右下角作為坐標(biāo)原點(diǎn),以"開(kāi)始安裝"按鈕中心位置的坐標(biāo)作 為Gn控件的坐標(biāo)。或者,錄制Gn控件所在的坐標(biāo)范圍作為屬性信息。
[0034] 對(duì)每個(gè)錄制完成的GUI控件,賦予一個(gè)唯一的標(biāo)識(shí),根據(jù)標(biāo)識(shí)即可找到該GUI控件 的屬性信息。在測(cè)試用例和導(dǎo)出接口中對(duì)GUI控件的引用都可以用標(biāo)識(shí)替代,實(shí)現(xiàn)了界面 元素名與測(cè)試內(nèi)部對(duì)象名的分離??蛇x地,若GUI控件的名稱(chēng)在測(cè)試用例中唯一,則使用 GUI控件的名稱(chēng)作為所述唯一標(biāo)識(shí)。
[0035] 可選地,錄制的屬性信息還包括:⑶I控件對(duì)應(yīng)的圖像半徑;則⑶I控件對(duì)應(yīng)的第 一圖像是以⑶I控件相對(duì)于父窗口的位置坐標(biāo)為中心,以⑶I控件對(duì)應(yīng)的圖像半徑為半徑 確定的圖形區(qū)域內(nèi)的圖像。
[0036] 具體地,錄制時(shí),將鼠標(biāo)移動(dòng)到⑶I控件上,指定圖像半徑r后,程序自動(dòng)捕獲鼠標(biāo) 相對(duì)于父窗口的坐標(biāo)作為⑶I控件相對(duì)于父窗口的位置坐標(biāo),截取以鼠標(biāo)位置(X,y)為中 心,圖像半徑r即(x-r,y-r,x+r,y+r)范圍內(nèi)的圖像作為第一圖像。本發(fā)明可以根據(jù)控件 大小選擇不同的半徑。
[0037] 步驟S120,根據(jù)屬性信息中的父窗口標(biāo)題和/或父窗口類(lèi)名查找⑶I控件所在的 父窗口。
[0038] 在識(shí)別時(shí),首先確定⑶I控件所在的父窗口已經(jīng)打開(kāi)。⑶I控件所在的父窗口一定 是一個(gè)可識(shí)別的標(biāo)準(zhǔn)控件,可通過(guò)FindWindow,EnumWindows等API進(jìn)行查找。
[0039] 步驟S130,根據(jù)⑶I控件相對(duì)于父窗口的位置坐標(biāo),截取預(yù)設(shè)尺寸和位置的第二 圖像。
[0040] 具體地,按照與錄制相應(yīng)的方式進(jìn)行。根據(jù)屬性信息中的GUI控件相對(duì)于父窗口 的坐標(biāo),自動(dòng)將鼠標(biāo)移動(dòng)到錄制時(shí)控件相對(duì)于父窗口的位置坐標(biāo)處,然后截取以鼠標(biāo)位置 坐標(biāo)(x,y)為中心的半徑為r的圓形圖像作為第二圖像,半徑r即是錄制的屬性信息中的 控件對(duì)應(yīng)的圖像半徑?;蛘呓厝。▁-r,y-r,x+r,y+r)范圍內(nèi)的圖像作為第二圖像。
[0041] 步驟S140,計(jì)算所述第二圖像與第一圖像之間的相似度并根據(jù)所述相似度對(duì)所述 ⑶I控件進(jìn)行識(shí)別。
[0042] 相似度大于預(yù)先設(shè)置的閾值時(shí),認(rèn)為第一圖像和第二圖像匹配,將鼠標(biāo)當(dāng)前位置 的第二圖像區(qū)域作為待識(shí)別的⑶I控件。
[0043] 可選地,利用感知哈希算法為第一圖像和第二圖像分別生成指紋字符串;然后根 據(jù)指紋字符串計(jì)算所述相似度。
[0044] 具體地,利用感知哈希算法計(jì)算相似度包括如下過(guò)程:
[0045] 1)縮小尺寸。將第一圖像和第二圖像縮小到8X8的尺寸,總共64個(gè)像素。這一 步的作用是去除圖片的細(xì)節(jié),只保留結(jié)構(gòu)、明暗等基本信息,摒棄不同尺寸、比例帶來(lái)的圖 片差異。2)簡(jiǎn)化色彩。將縮小后的圖像,轉(zhuǎn)為64級(jí)灰度。也就是說(shuō),所有像素點(diǎn)總共只有 64種顏色。3)分別計(jì)算第一、第二圖像所有64個(gè)像素的灰度平均值。4)比較像素的灰度。 將每個(gè)像素的灰度與平均值進(jìn)行比較,若大于或等于平均值,記為1 ;小于平均值,記為0。 5)第五步,計(jì)算哈希值。將上一步的比較結(jié)果組合在一起構(gòu)成了一個(gè)64位的整數(shù),這就是 這張圖像的指紋。其中組合的次序并不重要,只要保證所有圖像都采用同樣次序就行了。在 得到指紋以后,就可以對(duì)比第一圖像和第二圖像,看看64位中有多少位是不一樣的。在理 論上,這等同于計(jì)算"漢明距離"。如果不相同的數(shù)據(jù)位不超過(guò)5,就說(shuō)明兩張圖像很相似; 如果大于10,就說(shuō)明這是兩張不同的圖像。
[0046] 上述基于圖像的⑶I控件識(shí)別方法,同樣適用于標(biāo)準(zhǔn)⑶I控件,具有普遍通用性。
[0047] 根據(jù)本發(fā)明上述實(shí)施例提供的方法,預(yù)先錄制能夠唯一確定Gn控件的屬性信 息,包含GUI控件圖形元素的圖像、控件所在的父窗口名稱(chēng)以及GUI控件相對(duì)于父窗口的坐 標(biāo)等的屬性信息,在識(shí)別過(guò)程中根據(jù)父窗口名稱(chēng)和坐標(biāo)確定Gn控件的位置,截取第二圖 像,根據(jù)第二圖像與屬性信息中的包含GUI控件圖形元素的圖像來(lái)識(shí)別GUI控件。根據(jù)該 方案,能夠準(zhǔn)確識(shí)別非標(biāo)準(zhǔn)的⑶I控件。并且,這種識(shí)別方法可直接封裝為接口,適合用于 ⑶I自動(dòng)化測(cè)試中。
[0048] 圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的GUI控件的識(shí)別方法的流程圖。本實(shí)施例的 方法將上述的基于圖像的GUI控件識(shí)別方法應(yīng)用于GUI控件的自動(dòng)測(cè)試中。具體地,如圖 2所示,方法包括如下步驟:
[0049] 步驟S210,預(yù)先錄制的⑶I控件的屬性信息。
[0050] 以對(duì)軟件安裝過(guò)程進(jìn)行GUI測(cè)試為例,例如,安裝過(guò)程中涉及兩個(gè)GUI控件,"開(kāi)始 安裝"GUI控件和"安裝完成"GUI控件。預(yù)期的功能是:用戶點(diǎn)擊開(kāi)始安裝后,進(jìn)入安裝完 成界面,點(diǎn)擊安裝完成后,界面消失。這兩個(gè)控件都作為待識(shí)別的GUI控件。
[0051] 具體地,根據(jù)本實(shí)施例中的方法,錄制GUI控件時(shí),錄制的不是簡(jiǎn)單的圖像或復(fù)雜 的操作過(guò)程腳本,而是錄制能夠唯一識(shí)別此GUI控件的屬性信息。
[0052] 對(duì)每個(gè)錄制完成的GUI控件,賦予一個(gè)唯一的標(biāo)識(shí),根據(jù)標(biāo)識(shí)即可找到該GUI控件 的屬性信息。在測(cè)試用例和導(dǎo)出接口中對(duì)GUI控件的引用都可以用標(biāo)識(shí)替代,實(shí)現(xiàn)了界面 元素名與測(cè)試內(nèi)部對(duì)象名的分離??蛇x地,若GUI控件的名稱(chēng)在測(cè)試用例中唯一,則使用 GUI控件的名稱(chēng)作為所述唯一標(biāo)識(shí)。
[0053] 步驟S220,預(yù)先設(shè)置多個(gè)導(dǎo)出接口。
[0054] 導(dǎo)出接口用于在測(cè)試用例中執(zhí)行GUI測(cè)試步驟。如前文所述,每個(gè)GUI的測(cè)試步 驟通常包括兩個(gè)部分,對(duì)Gn控件的識(shí)別以及對(duì)該Gn控件的操作。在編寫(xiě)用例前,將通用 的GUI控件的識(shí)別邏輯和/或操作邏輯封裝在一個(gè)導(dǎo)出接口中。該導(dǎo)出接口表現(xiàn)為一個(gè)開(kāi) 發(fā)人員封裝的函數(shù),可在實(shí)際的用例中直接調(diào)用。
[0055] 其中,識(shí)別邏輯可以是上一實(shí)施例所述的⑶I控件的識(shí)別邏輯,也可以是標(biāo)準(zhǔn)⑶I 控件的識(shí)別邏輯。例如,使用 FindWindow,EnumWindow,GetWindowText,GetWindowRect 等 系統(tǒng)API函數(shù)獲?、荌控件的句柄,文本,位置等信息,對(duì)⑶I控件進(jìn)行識(shí)別,也可以是基于 MSAA的識(shí)別邏輯或本發(fā)明下文中介紹的基于圖像的識(shí)別邏輯等。
[0056] 操作邏輯對(duì)識(shí)別出的GUI控件進(jìn)行操作,包含但不僅限于點(diǎn)擊和回車(chē)操作等。例 如,軟件安裝過(guò)程中,識(shí)別出當(dāng)前界面內(nèi)的GUI控件為"開(kāi)始安裝"按鈕,模擬用戶點(diǎn)擊該 Gn控件,點(diǎn)擊后進(jìn)入下一界面"安裝完成"。導(dǎo)出接口還可用于判斷對(duì)⑶I控件的操作是 否成功,這通過(guò)判斷操作后的界面是否符合預(yù)期完成。例如,點(diǎn)擊"開(kāi)始安裝"按鈕后,在界 面中查找"安裝完成"按鈕,若找到,判斷"開(kāi)始安裝"這一測(cè)試步驟操作成功。
[0057] 具體地,在測(cè)試用例中被調(diào)用時(shí),導(dǎo)出接口接收GUI控件的標(biāo)識(shí)參數(shù)和/或GUI控 件的預(yù)設(shè)操作參數(shù),標(biāo)識(shí)參數(shù)就是步驟SllO中為每個(gè)GUI控件賦予的唯一標(biāo)識(shí)。根據(jù)標(biāo)識(shí) 參數(shù)找到預(yù)先錄制的GUI控件的屬性信息,利用屬性信息識(shí)別GUI控件,然后,接收操作參 數(shù)執(zhí)行對(duì)GUI控件的預(yù)設(shè)操作。當(dāng)然,也可以將識(shí)別邏輯和操作邏輯分別封裝在不同的導(dǎo) 出接口中,本領(lǐng)域技術(shù)人員可自行選擇。
[0058] 作為示例,本實(shí)施例中給出三個(gè)導(dǎo)出接口,分別為:
[0059] 第一導(dǎo)出接口,接收⑶I控件的標(biāo)識(shí)參數(shù)以識(shí)別⑶I控件;
[0060] 第二導(dǎo)出接口,接收第一⑶I控件標(biāo)識(shí)參數(shù),第二⑶I控件標(biāo)識(shí)參數(shù)以及第一⑶I 控件的預(yù)設(shè)操作參數(shù)以識(shí)別并操作第一 GUI控件直到識(shí)別到第二GUI控件;操作包括鼠標(biāo) 單擊,雙擊,回車(chē),tab切換等。
[0061] 第三導(dǎo)出接口,接收⑶I控件標(biāo)識(shí)參數(shù)和預(yù)設(shè)操作參數(shù)以識(shí)別并操作⑶I控件直 到實(shí)現(xiàn)目標(biāo)窗口,例如,點(diǎn)擊控件直到該GUI控件消失,或直到能夠查找到期望的目標(biāo)窗 □。
[0062] 上述步驟S210和步驟S220在測(cè)試用例編寫(xiě)前執(zhí)行。
[0063] 步驟S230,根據(jù)預(yù)定的⑶I測(cè)試過(guò)程,調(diào)用導(dǎo)出接口編寫(xiě)測(cè)試用例。
[0064] 具體地,按預(yù)定的GUI測(cè)試過(guò)程,根據(jù)測(cè)試過(guò)程中每個(gè)GUI的特征,調(diào)用合適的導(dǎo) 出接口,對(duì)導(dǎo)出接口進(jìn)行重新的組合,編寫(xiě)測(cè)試用例。
[0065] 仍以上述的軟件安裝過(guò)程為例,可調(diào)用第二導(dǎo)出接口對(duì)"開(kāi)始安裝" Gn控件的測(cè) 試,調(diào)用第三導(dǎo)出接口對(duì)"安裝完成"GUI控件的測(cè)試。分別將標(biāo)識(shí)參數(shù)和預(yù)設(shè)操作參數(shù)傳 遞給第二導(dǎo)出接口和第三導(dǎo)出接口。
[0066] 步驟S240,執(zhí)行編寫(xiě)的測(cè)試用例。
[0067] 導(dǎo)出接口接收參數(shù)后執(zhí)行識(shí)別邏輯和操作邏輯。若編寫(xiě)的測(cè)試用例執(zhí)行成功,GUI 測(cè)試過(guò)程通過(guò)。
[0068] 根據(jù)本發(fā)明上述實(shí)施例提供的方法,錄制的Gn控件的屬性信息作為測(cè)試執(zhí)行過(guò) 程中所需的測(cè)試數(shù)據(jù)被提取出來(lái),并將可能在多個(gè)測(cè)試用例中通用的測(cè)試步驟封裝為導(dǎo)出 接口,在被調(diào)用時(shí),導(dǎo)出接口讀取預(yù)先錄制的測(cè)試數(shù)據(jù),這種方式實(shí)現(xiàn)了腳本與數(shù)據(jù)的分 離。在編寫(xiě)測(cè)試用例時(shí),只需要根據(jù)待測(cè)的界面和測(cè)試流程,對(duì)導(dǎo)出接口進(jìn)行重新組合即 可,從而實(shí)現(xiàn)了測(cè)試數(shù)據(jù)和測(cè)試腳本的分離。用例的編寫(xiě)無(wú)需了解程序開(kāi)發(fā)知識(shí),十分便 捷。界面變化時(shí)只需重新錄制⑶I控件并重新組合導(dǎo)出接口即可,易于維護(hù)。
[0069] 圖3示出了根據(jù)本發(fā)明另一個(gè)實(shí)施例的GUI控件的識(shí)別方法的流程圖,該實(shí)施例 以360瀏覽器的安裝過(guò)程中的⑶I界面為例,360瀏覽器安裝界面中包括3個(gè)⑶I控件的識(shí) 別和操作,依次為:設(shè)置為默認(rèn)瀏覽器、開(kāi)始安裝和開(kāi)始體驗(yàn)。其中,方法包括如下步驟:
[0070] 步驟S310,分別錄制設(shè)置為默認(rèn)瀏覽器、開(kāi)始安裝、開(kāi)始體驗(yàn)3個(gè)⑶I控件的屬性 信息。
[0071] 本實(shí)施例中采用上文描述的基于圖像的⑶I控件識(shí)別方法識(shí)別⑶I控件。
[0072] 具體地,依次錄制設(shè)置為默認(rèn)瀏覽器、開(kāi)始安裝、開(kāi)始體驗(yàn)3個(gè)⑶I控件的控件名 稱(chēng)(name),父窗口類(lèi)名或標(biāo)題(ptitle),每個(gè)控件相對(duì)于父窗口的位置坐標(biāo)(pos),控件對(duì) 應(yīng)的圖像的半徑(radius),控件對(duì)應(yīng)圖像,以及控件的圖像路徑(imagepath)。以及預(yù)先設(shè) 定的第一圖像和第二圖像的相似度閾值,和圖像路徑imagepath。具體地,錄制的信息如下 表所示。
[0073]
【權(quán)利要求】
1. 一種GUI控件的識(shí)別方法,所述GUI控件的屬性信息被預(yù)先錄制并具有唯一標(biāo)識(shí),所 述屬性信息包括:GUI控件的父窗口的標(biāo)題和/或類(lèi)名,GUI控件相對(duì)于父窗口的位置坐標(biāo) 以及⑶I控件對(duì)應(yīng)的第一圖像; 所述方法包括: 根據(jù)屬性信息中的父窗口標(biāo)題和/或父窗口類(lèi)名查找GUI控件所在的父窗口; 根據(jù)⑶I控件相對(duì)于父窗口的位置坐標(biāo),截取預(yù)設(shè)尺寸和位置的第二圖像; 計(jì)算所述第二圖像與第一圖像之間的相似度并根據(jù)所述相似度對(duì)所述GUI控件進(jìn)行 識(shí)別。
2. 根據(jù)權(quán)利要求1所述的方法,其中,預(yù)先錄制的所述屬性信息還包括:GUI控件對(duì)應(yīng) 的圖像半徑; 所述⑶I控件對(duì)應(yīng)的第一圖像是以所述⑶I控件相對(duì)于父窗口的位置坐標(biāo)為中心,以 GUI控件對(duì)應(yīng)的圖像半徑為半徑確定的圖形區(qū)域內(nèi)的圖像; 所述根據(jù)⑶I控件相對(duì)于父窗口的位置坐標(biāo)截取預(yù)設(shè)尺寸和位置的第二圖像進(jìn)一步 為: 根據(jù)所述⑶I控件相對(duì)于父窗口的位置坐標(biāo),截取以所述⑶I控件相對(duì)于父窗口的位 置坐標(biāo)為中心,以⑶I控件對(duì)應(yīng)的圖像半徑為半徑的圖形區(qū)域內(nèi)的第二圖像。
3. 根據(jù)權(quán)利要求1或2所述的方法,其中,所述計(jì)算所述第二圖像與第一圖像之間的相 似度并根據(jù)所述相似度對(duì)所述GUI控件進(jìn)行識(shí)別進(jìn)一步包括: 利用感知哈希算法為第一圖像和第二圖像分別生成指紋字符串; 根據(jù)所述指紋字符串計(jì)算所述第二圖像與第一圖像之間的相似度; 若所述相似度大于預(yù)設(shè)閾值,將第二圖像區(qū)域識(shí)別為GUI控件。
4. 根據(jù)權(quán)利要求1-3任一項(xiàng)所述的方法,其中,所述方法還包括: 預(yù)先設(shè)置一個(gè)或多個(gè)導(dǎo)出接口,將GUI控件的識(shí)別過(guò)程封裝在所述一個(gè)或多個(gè)導(dǎo)出接 口中,或者,將GUI控件的識(shí)別過(guò)程和對(duì)GUI控件的預(yù)設(shè)操作邏輯封裝在所述一個(gè)或多個(gè)導(dǎo) 出接口中; 其中,封裝所述GUI控件的識(shí)別過(guò)程的導(dǎo)出接口用于接收GUI控件的標(biāo)識(shí)參數(shù),根據(jù)預(yù) 先錄制的GUI控件的屬性信息識(shí)別GUI控件; 封裝所述GUI控件的識(shí)別過(guò)程和對(duì)GUI控件的預(yù)設(shè)操作邏輯的導(dǎo)出接口用于接收GUI 控件的標(biāo)識(shí)參數(shù)和GUI控件的預(yù)設(shè)操作參數(shù),根據(jù)預(yù)先錄制的GUI控件的屬性信息識(shí)別GUI 控件并執(zhí)行對(duì)GUI控件的預(yù)設(shè)操作。
5. 根據(jù)權(quán)利要求4所述的方法,其中,所述導(dǎo)出接口包括: 第一導(dǎo)出接口,用于接收GUI控件的標(biāo)識(shí)參數(shù),根據(jù)預(yù)先錄制的GUI控件的屬性信息識(shí) 別GUI控件; 第二導(dǎo)出接口,接收第一 GUI控件標(biāo)識(shí)參數(shù),第二GUI控件標(biāo)識(shí)參數(shù)以及第一 GUI控件 的預(yù)設(shè)操作參數(shù)以識(shí)別第一 GUI控件并對(duì)第一 GUI控件執(zhí)行相應(yīng)的操作直到在父窗口中識(shí) 別到第二GUI控件; 第三導(dǎo)出接口,接收GUI控件標(biāo)識(shí)參數(shù)和預(yù)設(shè)操作參數(shù)以識(shí)別并對(duì)GUI控件執(zhí)行相應(yīng) 的操作直到實(shí)現(xiàn)目標(biāo)窗口。
6. 根據(jù)權(quán)利要求5所述的方法,其中,所述方法還包括: 根據(jù)預(yù)定的GUI測(cè)試過(guò)程,向所述導(dǎo)出接口傳遞GUI控件的標(biāo)識(shí)參數(shù)和/或GUI控件 的預(yù)設(shè)操作參數(shù),通過(guò)調(diào)用所述導(dǎo)出接口編寫(xiě)測(cè)試用例;所述導(dǎo)出接口在一個(gè)測(cè)試用例中 執(zhí)行GUI測(cè)試步驟,對(duì)一個(gè)或多個(gè)GUI控件進(jìn)行自動(dòng)測(cè)試; 執(zhí)行所述編寫(xiě)的測(cè)試用例。
7. 根據(jù)權(quán)利要求6所述的方法,其中,所述導(dǎo)出接口還接收超時(shí)參數(shù),指定調(diào)用該導(dǎo)出 接口的測(cè)試步驟的最長(zhǎng)執(zhí)行時(shí)間。
8. 根據(jù)權(quán)利要求6或7所述的方法,其中,所述方法還包括: 預(yù)先設(shè)置一個(gè)或多個(gè)功能接口;所述CTI功能接口中封裝有已編寫(xiě)的測(cè)試用例中 的由所述導(dǎo)出接口執(zhí)行的多個(gè)測(cè)試步驟; 所述方法還包括:根據(jù)預(yù)定的測(cè)試過(guò)程,調(diào)用所述CTI功能接口編寫(xiě)測(cè)試用例; 所述導(dǎo)出接口還包括:用于調(diào)用所述⑶I功能接口的第四導(dǎo)出接口。
9. 一種GUI控件的識(shí)別裝置,其中,所述GUI控件的屬性信息被預(yù)先錄制并具有唯一標(biāo) 識(shí); 所述裝置包括: GUI控件錄制模塊,適于預(yù)先錄制GUI控件的屬性信息,所述屬性信息包括:GUI控件的 父窗口的標(biāo)題和/或類(lèi)名,Gn控件相對(duì)于父窗口的位置坐標(biāo)以及⑶I控件對(duì)應(yīng)的第一圖 像; 查找模塊,適于根據(jù)屬性信息中的父窗口標(biāo)題和/或父窗口類(lèi)名查找⑶I控件所在的 父窗口; 圖像截取模塊,適于根據(jù)⑶I控件相對(duì)于父窗口的位置坐標(biāo),截取預(yù)設(shè)尺寸和位置的 第二圖像; 識(shí)別模塊,適于計(jì)算所述第二圖像與第一圖像之間的相似度并根據(jù)所述相似度對(duì)所述 ⑶I控件進(jìn)行識(shí)別。
10. 根據(jù)權(quán)利要求9所述的裝置,其中,預(yù)先錄制的所述屬性信息還包括:Gn控件對(duì)應(yīng) 的圖像半徑; 所述⑶I控件對(duì)應(yīng)的第一圖像是以所述⑶I控件相對(duì)于父窗口的位置坐標(biāo)為中心,以 GUI控件對(duì)應(yīng)的圖像半徑為半徑確定的圖形區(qū)域內(nèi)的圖像; 所述圖像截取模塊進(jìn)一步適于:根據(jù)所述⑶I控件相對(duì)于父窗口的位置坐標(biāo),截取以 所述⑶I控件相對(duì)于父窗口的位置坐標(biāo)為中心,以⑶I控件對(duì)應(yīng)的圖像半徑為半徑的圖形 區(qū)域內(nèi)的第二圖像。
【文檔編號(hào)】G06F11/36GK104391797SQ201410747884
【公開(kāi)日】2015年3月4日 申請(qǐng)日期:2014年12月9日 優(yōu)先權(quán)日:2014年12月9日
【發(fā)明者】洪麗娜, 李珂 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司