本申請(qǐng)涉及自動(dòng)化測(cè)試技術(shù)領(lǐng)域,具體而言,涉及用于自動(dòng)生成測(cè)試腳本的方法、裝置及電子設(shè)備。
背景技術(shù):
現(xiàn)有的自動(dòng)化測(cè)試技術(shù)中,一種相關(guān)技術(shù)是基于真機(jī)操作坐標(biāo)自動(dòng)生成操作腳本,支持腳本文本編輯功能,可以將生成腳本發(fā)布至云平臺(tái)進(jìn)行批量回放。
但是這種技術(shù)是基于坐標(biāo)在屏幕的百分比進(jìn)行腳本錄制,腳本不夠直觀,不便于編輯和維護(hù),而且在腳本不合適時(shí),不便于進(jìn)行修改。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)公開用于自動(dòng)生成測(cè)試腳本的方法,在腳本錄制時(shí)同步生成對(duì)應(yīng)的操作名和操作位置對(duì)應(yīng)的截圖呈現(xiàn)腳本內(nèi)容。
本發(fā)明的其他特性和優(yōu)點(diǎn)將通過下面的詳細(xì)描述變得顯然,或部分地通過本發(fā)明的實(shí)踐而習(xí)得。
根據(jù)本發(fā)明的一個(gè)方面,提供一種用于自動(dòng)生成測(cè)試腳本的方法,包括:
獲取錄制腳本時(shí)的操作信息,所述操作信息包括操作名、操作位置對(duì)應(yīng)的截圖;
將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑生成腳本行;
將所述腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,實(shí)時(shí)對(duì)替換后的所述腳本行進(jìn)行呈現(xiàn)。
根據(jù)一些實(shí)施例,所述操作信息還包括所述截圖的相關(guān)參數(shù),所述相關(guān)參數(shù)包括錄制腳本時(shí)設(shè)備畫面的分辨率;
將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑生成腳本行包括:將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑、以及所述相關(guān)參數(shù)生成腳本行。
根據(jù)一些實(shí)施例,所述方法還包括:
在獲取錄制腳本時(shí)的操作信息之前進(jìn)行設(shè)備截屏將得到的截屏圖像存儲(chǔ)到本地;
當(dāng)接收到對(duì)所述截圖的設(shè)定操作時(shí),彈出所述截屏圖像,供用戶在所述截屏圖像中精細(xì)編輯所述截圖。
根據(jù)一些實(shí)施例,所述方法還包括:獲取用戶通過所述截屏圖像所截取的第二截圖,將所述第二截圖存儲(chǔ)到所述截圖的存儲(chǔ)路徑,以將所述截圖替換成所述第二截圖。
根據(jù)一些實(shí)施例,彈出所述截屏圖像還包括:將所述截屏圖像中除所述截圖所在區(qū)域之外的區(qū)域進(jìn)行灰度化處理。
根據(jù)一些實(shí)施例,彈出所述截屏圖像還包括:在所述截屏圖像中所述截圖所在區(qū)域的周圍渲染預(yù)設(shè)顏色的框線以凸顯所述截圖。
根據(jù)一些實(shí)施例,所述方法還包括獲取用戶在所述截圖中勾畫的至少一個(gè)忽略區(qū)(ignore)和/或至少一個(gè)關(guān)注區(qū)(focus);
其中所述忽略區(qū)用于在回放所述腳本行過程中識(shí)別所述截圖時(shí)忽略所述至少一個(gè)忽略區(qū)內(nèi)的像素;
其中所述關(guān)注區(qū)用于在在回放所述腳本行過程中識(shí)別所述截圖時(shí),只關(guān)注所述截圖中包含的所述至少一個(gè)關(guān)注區(qū)域。
根據(jù)本發(fā)明的另一方面,提供一種用于自動(dòng)生成測(cè)試腳本的裝置,其包括
操作信息獲取單元,用于獲取錄制腳本時(shí)的操作信息,所述操作信息包括操作名、操作位置對(duì)應(yīng)的截圖;
腳本行生成單元,用于將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑生成腳本行;
腳本行呈現(xiàn)單元,用于將所述腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,實(shí)時(shí)對(duì)替換后的所述腳本行進(jìn)行呈現(xiàn)。
根據(jù)一些實(shí)施例,所述裝置還包括腳本打開單元,用于打開腳本時(shí),將所述腳本所包含的腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,對(duì)替換后的腳本行進(jìn)行呈現(xiàn)。
根據(jù)一些實(shí)施例,所述操作信息還包括所述截圖的相關(guān)參數(shù),所述相關(guān)參數(shù)包括錄制腳本時(shí)設(shè)備畫面的分辨率;
所述腳本行生成單元還用于:將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑、以及所述相關(guān)參數(shù)生成腳本行。
根據(jù)一些實(shí)施例,所述裝置還包括截屏單元,用于在獲取錄制腳本時(shí)的操作信息之前進(jìn)行設(shè)備截屏將得到的截屏圖像存儲(chǔ)到本地;
精細(xì)編輯單元,用于當(dāng)接收到對(duì)所述截圖的設(shè)定操作時(shí),彈出所述截屏圖像,供用戶在所述截屏圖像中精細(xì)編輯所述截圖。
根據(jù)一些實(shí)施例,所述精細(xì)編輯單元還用于,獲取用戶通過所述截屏圖像所截取的第二截圖,將所述第二截圖存儲(chǔ)到所述截圖的存儲(chǔ)路徑,以將所述截圖替換成所述第二截圖。
根據(jù)一些實(shí)施例,所述精細(xì)編輯單元還用于:將所述截屏圖像中除所述截圖所在區(qū)域之外的區(qū)域進(jìn)行灰度化處理。
根據(jù)一些實(shí)施例,所述精細(xì)編輯單元還用于:在所述截屏圖像中所述截圖所在區(qū)域的周圍渲染預(yù)設(shè)顏色的框線以凸顯所述截圖。
根據(jù)一些實(shí)施例,所述精細(xì)編輯單元還用于獲取用戶在所述截圖中勾畫的至少一個(gè)忽略區(qū)和/或至少一個(gè)關(guān)注區(qū);
其中所述忽略區(qū)用于在回放所述腳本行過程中識(shí)別所述截圖時(shí)忽略所述至少一個(gè)忽略區(qū)內(nèi)的像素;
其中所述關(guān)注區(qū)用于在在回放所述腳本行過程中識(shí)別所述截圖時(shí),只關(guān)注所述截圖中包含的所述至少一個(gè)關(guān)注區(qū)域。
根據(jù)本發(fā)明的另一方面,提供一種電子設(shè)備,包括:處理器;存儲(chǔ)器,存儲(chǔ)用于處理器控制以下操作的指令:
獲取錄制腳本時(shí)的操作信息,所述操作信息包括操作名、操作位置對(duì)應(yīng)的截圖;
將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑生成腳本行;
將所述腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,實(shí)時(shí)對(duì)替換后的所述腳本行進(jìn)行呈現(xiàn)。
本申請(qǐng)的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:
本申請(qǐng)的實(shí)施例提供的技術(shù)方案通過獲取錄制腳本時(shí)的操作名、操作位置對(duì)應(yīng)的截圖,將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑生成腳本行;將所述腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖作為腳本行界面,實(shí)時(shí)對(duì)所述腳本行界面進(jìn)行呈現(xiàn),能夠在腳本錄制時(shí)同步生成對(duì)應(yīng)的操作名和操作位置對(duì)應(yīng)的截圖呈現(xiàn)腳本內(nèi)容。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性的,并不能限制本發(fā)明。
附圖說明
通過參照附圖詳細(xì)描述其示例實(shí)施例,本發(fā)明的上述和其它特征及優(yōu)點(diǎn)將變得更加明顯。
圖1示出了根據(jù)本發(fā)明一實(shí)施例的用于自動(dòng)生成測(cè)試腳本的方法;
圖2示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的腳本本地存儲(chǔ)的結(jié)構(gòu)圖;
圖3示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的python腳本片段;
圖4示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的腳本片段的html顯示;
圖5示出了根據(jù)本發(fā)明另一實(shí)施例的用于自動(dòng)生成測(cè)試腳本的方法;
圖6示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的腳本行的示意圖;
圖7示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的在截屏圖像中精細(xì)編輯截圖的示意圖;
圖8示出了根據(jù)本發(fā)明另一實(shí)施例的示例所述的在截屏圖像中精細(xì)編輯截圖的示意圖;
圖9示出了根據(jù)本發(fā)明又一實(shí)施例的示例所述的在截屏圖像中精細(xì)編輯截圖方法中的灰度化流程示意圖;
圖10示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的忽略區(qū)與關(guān)注區(qū)的選取方法示意圖;
圖11示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的忽略區(qū)與關(guān)注區(qū)的參數(shù)自動(dòng)生成腳本示意圖;
圖12示出了根據(jù)本發(fā)明一實(shí)施例的用于自動(dòng)生成測(cè)試腳本的裝置的框圖
圖13示出了根據(jù)本發(fā)明另一實(shí)施例的用于自動(dòng)生成測(cè)試腳本的裝置的框圖;
圖14示出了根據(jù)本發(fā)明一實(shí)施例的電子設(shè)備。
具體實(shí)施方式
現(xiàn)在將參考附圖更全面地描述示例實(shí)施例。然而,示例實(shí)施例能夠以多種形式實(shí)施,且不應(yīng)被理解為限于在此闡述的實(shí)施例;相反,提供這些實(shí)施例使得本發(fā)明將全面和完整,并將示例實(shí)施例的構(gòu)思全面地傳達(dá)給本領(lǐng)域的技術(shù)人員。在圖中相同的附圖標(biāo)記表示相同或類似的部分,因而將省略對(duì)它們的重復(fù)描述。
此外,所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個(gè)或更多實(shí)施例中。在下面的描述中,提供許多具體細(xì)節(jié)從而給出對(duì)本發(fā)明的實(shí)施例的充分理解。然而,本領(lǐng)域技術(shù)人員將意識(shí)到,可以實(shí)踐本發(fā)明的技術(shù)方案而沒有特定細(xì)節(jié)中的一個(gè)或更多,或者可以采用其它的方法、組元、裝置、步驟等。在其它情況下,不詳細(xì)示出或描述公知方法、裝置、實(shí)現(xiàn)或者操作以避免模糊本發(fā)明的各方面。
附圖中所示的方框圖僅僅是功能實(shí)體,不一定必須與物理上獨(dú)立的實(shí)體相對(duì)應(yīng)。即,可以采用軟件形式來實(shí)現(xiàn)這些功能實(shí)體,或在一個(gè)或多個(gè)硬件模塊或集成電路中實(shí)現(xiàn)這些功能實(shí)體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實(shí)現(xiàn)這些功能實(shí)體。
附圖中所示的流程圖僅是示例性說明,不是必須包括所有的內(nèi)容和操作/步驟,也不是必須按所描述的順序執(zhí)行。例如,有的操作/步驟還可以分解,而有的操作/步驟可以合并或部分合并,因此實(shí)際執(zhí)行的順序有可能根據(jù)實(shí)際情況改變。
圖1示出了根據(jù)本發(fā)明一實(shí)施例的用于自動(dòng)生成測(cè)試腳本的方法,本實(shí)施例可適用于根據(jù)用戶錄制腳本時(shí)的操作生成包含操作位置截圖的腳本行的情況,如圖1所示,本實(shí)施例所述的用于自動(dòng)生成測(cè)試腳本的方法包括:
在步驟S110中,獲取錄制腳本時(shí)的操作信息,所述操作信息包括操作名、操作位置對(duì)應(yīng)的截圖。
所述操作信息還可包括所述截圖的相關(guān)參數(shù)。由于終端的屏幕尺寸大小不一,為了使錄制的腳本在回歸測(cè)試時(shí)適應(yīng)不同的終端,所述相關(guān)參數(shù)包括錄制腳本時(shí)設(shè)備畫面的分辨率。
在步驟S120中,將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑生成腳本行。
若所述相關(guān)參數(shù)包括錄制腳本時(shí)設(shè)備畫面的分辨率,則本步驟具體為將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑、以及所述相關(guān)參數(shù)生成腳本行。
圖2示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的腳本本地存儲(chǔ)的結(jié)構(gòu)圖,如圖2所示,與相有技術(shù)相比,本實(shí)施例除了存儲(chǔ)所錄制的腳本之外,還存儲(chǔ)了操作位置對(duì)應(yīng)的截圖。
在步驟S130中,將所述腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,實(shí)時(shí)對(duì)替換后的所述腳本行進(jìn)行呈現(xiàn)。
圖3示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的python腳本片段,根據(jù)如圖3所述的腳本片段和如圖2所述的截圖,采用本實(shí)施例所述的方法,圖3所述腳本片段呈現(xiàn)如圖4所示。
本實(shí)施例通過將腳本行轉(zhuǎn)化為html語(yǔ)言,并將截圖的存儲(chǔ)路徑替換成對(duì)應(yīng)截圖,因此,還可在打開腳本時(shí),將所述腳本所包含的腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,對(duì)替換后的腳本行進(jìn)行呈現(xiàn)。
本實(shí)施例通過獲取錄制腳本時(shí)的操作名、操作位置對(duì)應(yīng)的截圖,將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑生成腳本行;將所述腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖作為腳本行界面,實(shí)時(shí)對(duì)所述腳本行界面進(jìn)行呈現(xiàn),能夠在腳本錄制時(shí)同步生成對(duì)應(yīng)的操作名和操作位置對(duì)應(yīng)的截圖呈現(xiàn)腳本內(nèi)容。
圖5示出了根據(jù)本發(fā)明另一實(shí)施例的用于自動(dòng)生成測(cè)試腳本的方法,如圖5所示,本實(shí)施例所述的用于自動(dòng)生成測(cè)試腳本的方法包括:
在步驟S510中,進(jìn)行設(shè)備截屏將得到的截屏圖像存儲(chǔ)到本地。
在步驟S520中,獲取錄制腳本時(shí)的操作信息,所述操作信息包括操作名、操作位置對(duì)應(yīng)的截圖。
在步驟S530中,將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖
在本地的存儲(chǔ)路徑生成腳本行。
在步驟S540中,將所述腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,實(shí)時(shí)對(duì)替換后的所述腳本行進(jìn)行呈現(xiàn)。
在步驟S550中,當(dāng)接收到對(duì)所述截圖的設(shè)定操作時(shí),彈出所述截屏圖像,供用戶在所述截屏圖像中精細(xì)編輯所述截圖。
為了進(jìn)一步地凸顯所述截圖,方便用戶快速查看所述截圖,以編輯所述截圖,根據(jù)本發(fā)明的一些實(shí)施例,還可以將所述截屏圖像中除所述截圖所在區(qū)域之外的區(qū)域進(jìn)行灰度化處理,或者在所述截屏圖像中所述截圖所在區(qū)域的周圍渲染預(yù)設(shè)顏色的框線以凸顯所述截圖。
為了能夠在識(shí)別包含有無關(guān)背景的截圖在屏幕中的對(duì)應(yīng)位置時(shí),能夠提高匹配可信度和效率,從而能夠提高識(shí)別的質(zhì)量,本實(shí)施例所述方法還可包括獲取用戶在所述截圖中勾畫至少一個(gè)忽略區(qū)。其中所述忽略區(qū)用于在回放所述腳本行過程中識(shí)別所述截圖時(shí)忽略所述至少一個(gè)忽略區(qū)。所述至少一個(gè)忽略區(qū)可通過響應(yīng)用戶操作得到,或者按照設(shè)定要求從所述模板圖像上自動(dòng)識(shí)別得到。
為了能夠從源圖像中識(shí)別出與模板圖像中局部區(qū)域內(nèi)容一致但位置不一致的圖像,能夠提高匹配可信度和效率,從而能夠提高識(shí)別的質(zhì)量,本實(shí)施例所述方法還可包括獲取用戶在所述截圖中勾畫至少一個(gè)關(guān)注區(qū)。其中所述關(guān)注區(qū)用于在在回放所述腳本行過程中識(shí)別所述截圖時(shí),只關(guān)注所述截圖中包含的所述至少一個(gè)關(guān)注區(qū)域。所述至少一個(gè)關(guān)注區(qū)可通過響應(yīng)用戶操作得到,或者按照設(shè)定要求從所述模板圖像上自動(dòng)識(shí)別得到。
或者為了同時(shí)達(dá)到上述兩方面的技術(shù)效果,本實(shí)施例所述方法還可包括獲取用戶在所述截圖中同時(shí)勾畫至少一個(gè)忽略區(qū)和至少一個(gè)關(guān)注區(qū)。
在步驟S560中,獲取用戶通過所述截屏圖像所截取的第二截圖,將所述第二截圖存儲(chǔ)到所述截圖的存儲(chǔ)路徑,以將所述截圖替換成所述第二截圖。
例如,圖4所示的腳本內(nèi)包含有python腳本和python腳本中用到的截圖,在載入測(cè)試腳本時(shí),將每行python代碼轉(zhuǎn)化為html語(yǔ)言,并將python代碼中的圖像文件名符串替換成從腳本目錄中獲取到的圖片。從而實(shí)現(xiàn)從純文本的python腳本到可視化程度較高的html的轉(zhuǎn)換。在編輯腳本后,實(shí)施保存時(shí),逐行解析html腳本內(nèi)容,再次將圖片替換成圖像文件名字符串,保存到腳本對(duì)應(yīng)的python文件中。
圖6示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的腳本行的示意圖,圖6為根據(jù)用戶在點(diǎn)擊操作自動(dòng)生成的腳本,腳本中的record_pos參數(shù)為該截圖在設(shè)備的畫面中對(duì)應(yīng)的參數(shù),resolution參數(shù)為設(shè)備畫面的分辨率(即橫豎方向上的像素點(diǎn)數(shù))。
在實(shí)際應(yīng)用中,經(jīng)常出現(xiàn)截圖不合適,需要對(duì)截圖進(jìn)行修改的情況。在實(shí)際場(chǎng)景中可能有多個(gè)同學(xué)(假設(shè)為同學(xué)A和同學(xué)B)維護(hù)同一套測(cè)試腳本。如果同學(xué)A使用設(shè)備a生成了一份測(cè)試腳本,同學(xué)B運(yùn)行腳本時(shí)候發(fā)現(xiàn)有個(gè)截圖有些問題需要進(jìn)行修改。如果同學(xué)B手頭上沒有合適的設(shè)備進(jìn)行錄制,則無法進(jìn)行腳本圖片的編輯。
本實(shí)施例中,在用戶進(jìn)行操作錄制生成腳本時(shí),將截圖的來源圖像(即設(shè)備截屏)保存到本地文件,需要對(duì)腳本中的圖片進(jìn)行編輯時(shí),將截圖對(duì)應(yīng)的設(shè)備截屏從本地文件中取出,供用戶在截圖編輯器中進(jìn)行精細(xì)編輯,如圖7所示。截圖工具中進(jìn)行截圖精確選取的效果如圖8所示。
可以看出,將非截圖區(qū)域進(jìn)行灰度化處理,并將截圖區(qū)域的周圍繪制一圈白色框線(圖8的實(shí)際界面中,白色框線內(nèi)部為彩色樣式,白色框線外部為黑白樣式),可以使得選中的截圖區(qū)域最大程度的凸顯化,有利于迅速判斷出選中的截圖區(qū)域是否合適。
圖9示出了根據(jù)本發(fā)明又一實(shí)施例的示例所述的在截屏圖像中精細(xì)編輯截圖方法中的灰度化流程示意圖,如圖9所示,本實(shí)施例中,實(shí)現(xiàn)彩色圖像局部灰化的方法通過以下三個(gè)步驟:①將彩色源圖像進(jìn)行區(qū)域截圖,②將彩色源圖像灰度化,并將區(qū)域截圖根據(jù)rgb三通道拆分成r圖像、g圖像、b圖像,將r圖像在灰度化源圖像的截圖區(qū)域進(jìn)行覆蓋作為結(jié)果的R通道圖像,g圖像在灰度化源圖像的截圖區(qū)域進(jìn)行覆蓋作為結(jié)果的G通道圖像,b圖像在灰度化源圖像的截圖區(qū)域進(jìn)行覆蓋作為結(jié)果的B通道圖像;③將R通道圖像、G通道圖像、B通道圖像進(jìn)行三通道疊加,即可生成局部彩色圖像,再將結(jié)果圖中的截圖區(qū)域周邊繪制白色線框,即可得到圖8中的效果。
另外,在截圖工具中,是可以選定截圖的忽略區(qū)域和關(guān)注區(qū)域,這兩個(gè)參數(shù)是用于生成腳本中的圖像識(shí)別相關(guān)的參數(shù),圖10示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的忽略區(qū)與關(guān)注區(qū)的選取方法示意圖,其示意圖如圖10所示。
通過選中忽略/關(guān)注功能,就可以通過鼠標(biāo)勾畫,在彩色截圖區(qū)域中勾畫出忽略區(qū)域和關(guān)注區(qū)域。其中忽略區(qū)域在截圖中體現(xiàn)為黑色遮擋塊,關(guān)注區(qū)域在截圖中體現(xiàn)為黑色線框,圖11示出了根據(jù)本發(fā)明一實(shí)施例的示例所述的忽略區(qū)與關(guān)注區(qū)的參數(shù)自動(dòng)生成腳本示意圖,其示意圖如圖11所示。需要說明的是,圖11中ignore是指忽略區(qū),focus是指關(guān)注區(qū)。
選中截圖后,按照需要完成忽略區(qū)域和關(guān)注區(qū)域勾選后,點(diǎn)擊確認(rèn),則截圖編輯器將選中的忽略和關(guān)注區(qū)域以矩陣的[x_min,y_min,x_max,y_max]坐標(biāo)列表的形式寫入腳本參數(shù)。其中上文所述的x_min,y_min,x_max,y_max,分別是忽略、關(guān)注的矩形區(qū)域的左上角在截圖坐標(biāo)系中的坐標(biāo),如圖12所示。
需要說明的是,在腳本中是可以添加多個(gè)自定義參數(shù)的,如圖11所示,原有的timeout、threshold等參數(shù)是人工添加上去的,resolution是與截屏緩存文件相關(guān),所以在替換截圖時(shí),這部分參數(shù)需要原樣保留;而record_pos、關(guān)注、忽略參數(shù)則為截圖相關(guān)參數(shù),隨著截圖的變化而變化,在完成截圖替換時(shí)需要將新截圖對(duì)應(yīng)的參數(shù)覆蓋掉。
因此,在雙擊腳本編輯區(qū)截圖時(shí),提取出截圖對(duì)應(yīng)的整個(gè)腳本行,將腳本行中所有的參數(shù)解析出來。在使用者通過截圖編輯器完成截圖后,將預(yù)設(shè)的保留參數(shù)的數(shù)據(jù)保留,將變化參數(shù)進(jìn)行替換,以新生成的腳本行覆蓋掉原來截圖對(duì)應(yīng)的腳本行,并將對(duì)應(yīng)的新截圖覆蓋掉腳本文件夾中原有的截圖。
本實(shí)施例執(zhí)行的主體是一個(gè)完整的自動(dòng)化腳本生產(chǎn)工具,對(duì)跨設(shè)備通用化自動(dòng)化腳本錄制、編輯、維護(hù)機(jī)制做出了具體的闡述。將本地腳本結(jié)構(gòu)定義為文件夾,將腳本代碼結(jié)構(gòu)轉(zhuǎn)化為python代碼文件,將腳本中的用到的截圖均以本地圖片的形式保存到腳本文件夾中。自動(dòng)化腳本生產(chǎn)工具從腳本文件夾中載入腳本時(shí),轉(zhuǎn)化為圖像化的界面進(jìn)行展示,保存腳本時(shí)再將對(duì)應(yīng)的圖形化界面轉(zhuǎn)化為本地腳本結(jié)構(gòu)。在自動(dòng)化腳本生產(chǎn)工具連接移動(dòng)設(shè)備或者windows程序進(jìn)行腳本錄制時(shí),自動(dòng)化腳本生產(chǎn)工具會(huì)根據(jù)操作自動(dòng)生成對(duì)應(yīng)的操作腳本行,該腳本行中包含操作類型、操作位置對(duì)應(yīng)截圖、截圖的相關(guān)參數(shù)。
通過定義明確的腳本結(jié)構(gòu),自動(dòng)化腳本生產(chǎn)工具實(shí)現(xiàn)了對(duì)自動(dòng)化測(cè)試腳本的標(biāo)準(zhǔn)化生產(chǎn)和管理。
只需要雙擊腳本編輯區(qū)域的圖片元素,即可調(diào)出截圖編輯器。截圖編輯器載入腳本錄制現(xiàn)場(chǎng)的截屏,用戶進(jìn)行截圖選取時(shí),通過彩色區(qū)域和灰度區(qū)域的展示,輔助用戶進(jìn)行精細(xì)化截圖選取。用戶可通過選中忽略或者關(guān)注功能,選出截圖中的忽略區(qū)域和關(guān)注區(qū)域。在截圖修改過程中,自動(dòng)化腳本生產(chǎn)工具對(duì)截圖所在的腳本行參數(shù)進(jìn)行解析,將與截圖修改無關(guān)的參數(shù)原樣保留,與截圖有關(guān)的參數(shù)進(jìn)行覆蓋。截圖編輯器使得用戶修改腳本時(shí),可以脫離設(shè)備,只需要進(jìn)行截圖區(qū)域的勾選和忽略、關(guān)注區(qū)域的勾選,即可完成截圖的修改。
通過截圖編輯器的功能封裝,使得用戶在修改自動(dòng)化測(cè)試腳本時(shí)可以脫離設(shè)備,編輯截圖時(shí),以簡(jiǎn)單清晰的方式展現(xiàn)截圖編輯情況,并實(shí)現(xiàn)自動(dòng)的腳本內(nèi)容覆蓋。大大方便了用戶對(duì)腳本的修改和編輯。
圖12示出了根據(jù)本發(fā)明一實(shí)施例的用于自動(dòng)生成測(cè)試腳本的裝置的框圖,如圖12所示,本實(shí)施例所述的用于自動(dòng)生成測(cè)試腳本的裝置包括操作信息獲取單元1210、腳本行生成單元1220、以及腳本行呈現(xiàn)單元1230。
該操作信息獲取單元1210被配置為,用于獲取錄制腳本時(shí)的操作信息,所述操作信息包括操作名、操作位置對(duì)應(yīng)的截圖;
該腳本行生成單元1220被配置為,用于將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑生成腳本行;
該腳本行呈現(xiàn)單元1230被配置為,用于將所述腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,實(shí)時(shí)對(duì)替換后的所述腳本行進(jìn)行呈現(xiàn)。
根據(jù)本發(fā)明的一些實(shí)施例,所述裝置還包括腳本打開單元(圖12中未示出),用于打開腳本時(shí),將所述腳本所包含的腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,對(duì)替換后的腳本行進(jìn)行呈現(xiàn)。
根據(jù)本發(fā)明的一些實(shí)施例,所述操作信息還包括所述截圖的相關(guān)參數(shù),所述相關(guān)參數(shù)包括錄制腳本時(shí)設(shè)備畫面的分辨率;
所述腳本行生成單元1230還用于:將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑、以及所述相關(guān)參數(shù)生成腳本行。
圖13示出了根據(jù)本發(fā)明另一實(shí)施例的用于自動(dòng)生成測(cè)試腳本的裝置的框圖,如圖13所示,本實(shí)施例所述的用于自動(dòng)生成測(cè)試腳本的裝置包括截屏單元1310、操作信息獲取單元1320、腳本行生成單元1330、腳本行呈現(xiàn)單元1340、以及精細(xì)編輯單元1350。
該截屏單元1310被配置為,用于在獲取錄制腳本時(shí)的操作信息之前進(jìn)行設(shè)備截屏將得到的截屏圖像存儲(chǔ)到本地;
該操作信息獲取單元1320被配置為,用于獲取錄制腳本時(shí)的操作信息,所述操作信息包括操作名、操作位置對(duì)應(yīng)的截圖;
該腳本行生成單元1330被配置為,用于將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑生成腳本行;
該腳本行呈現(xiàn)單元1340被配置為,用于將所述腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,實(shí)時(shí)對(duì)替換后的所述腳本行進(jìn)行呈現(xiàn)。
該精細(xì)編輯單元1350被配置為,用于當(dāng)接收到對(duì)所述截圖的設(shè)定操作時(shí),彈出所述截屏圖像,供用戶在所述截屏圖像中精細(xì)編輯所述截圖。
根據(jù)本發(fā)明的一些實(shí)施例,所述精細(xì)編輯單元1350還用于,獲取用戶通過所述截屏圖像所截取的第二截圖,將所述第二截圖存儲(chǔ)到所述截圖的存儲(chǔ)路徑,以將所述截圖替換成所述第二截圖。
根據(jù)本發(fā)明的一些實(shí)施例,所述精細(xì)編輯單元1350還用于:將所述截屏圖像中除所述截圖所在區(qū)域之外的區(qū)域進(jìn)行灰度化處理。
根據(jù)本發(fā)明的一些實(shí)施例,所述精細(xì)編輯單元1350還用于:在所述截屏圖像中所述截圖所在區(qū)域的周圍渲染預(yù)設(shè)顏色的框線以凸顯所述截圖。
根據(jù)本發(fā)明的一些實(shí)施例,所述精細(xì)編輯單元1350還用于獲取用戶在所述截圖中勾畫的至少一個(gè)忽略區(qū)和/或至少一個(gè)關(guān)注區(qū);
其中所述忽略區(qū)用于在回放所述腳本行過程中識(shí)別所述截圖時(shí)忽略所述至少一個(gè)忽略區(qū)內(nèi)的像素;
其中所述關(guān)注區(qū)用于在在回放所述腳本行過程中識(shí)別所述截圖時(shí),只關(guān)注所述截圖中包含的所述至少一個(gè)關(guān)注區(qū)域。
關(guān)于上述實(shí)施例中的裝置,其中各個(gè)單元執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實(shí)施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
本實(shí)施例提供的用于自動(dòng)生成測(cè)試腳本的裝置可執(zhí)行本發(fā)明實(shí)施例一和實(shí)施例二所提供的用于自動(dòng)生成測(cè)試腳本的方法,具備執(zhí)行方法相應(yīng)的功能模塊和有益效果。
圖14示出了根據(jù)本發(fā)明一實(shí)施例的電子設(shè)備,如圖14所示,電子設(shè)備1400可包括處理器1410、存儲(chǔ)器1420、發(fā)射器1430及接收器1440。
存儲(chǔ)器1420可存儲(chǔ)用于處理器1410控制操作處理的指令。存儲(chǔ)器1420可包括易失性或非易失性存儲(chǔ)器,如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、可擦除可編程只讀存儲(chǔ)器(EPROM)、可編程只讀存儲(chǔ)器(PROM)、只讀存儲(chǔ)器(ROM)等,本發(fā)明對(duì)此沒有限制。
處理器1410可調(diào)用存儲(chǔ)器1420中存儲(chǔ)的指令控制相關(guān)操作。根據(jù)一實(shí)施例,存儲(chǔ)器1420存儲(chǔ)用于處理器1410控制以下操作的指令:
獲取錄制腳本時(shí)的操作信息,所述操作信息包括操作名、操作位置對(duì)應(yīng)的截圖;
將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑生成腳本行;
將所述腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,實(shí)時(shí)對(duì)替換后的所述腳本行進(jìn)行呈現(xiàn)。
易于理解,存儲(chǔ)器1420還可存儲(chǔ)用于處理器1410控制根據(jù)本發(fā)明實(shí)施例的其他操作的指令,這里不再贅述。
處理器1410還可控制發(fā)射器1430和接收器1440進(jìn)行信號(hào)收發(fā)等。
通過以上的詳細(xì)描述,本領(lǐng)域的技術(shù)人員易于理解,根據(jù)本發(fā)明實(shí)施例的系統(tǒng)和方法具有以下優(yōu)點(diǎn)中的一個(gè)或多個(gè)。
根據(jù)本發(fā)明的實(shí)施例,打開腳本時(shí),將所述腳本所包含的腳本行轉(zhuǎn)化為html語(yǔ)言,并將所述截圖的存儲(chǔ)路徑替換成從所述存儲(chǔ)路徑中取到的截圖,對(duì)替換后的腳本行進(jìn)行呈現(xiàn)。
根據(jù)本發(fā)明的一些實(shí)施例,所述操作信息還包括所述截圖的相關(guān)參數(shù),所述相關(guān)參數(shù)包括錄制腳本時(shí)設(shè)備畫面的分辨率;
將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑生成腳本行包括:將所述截圖存儲(chǔ)到本地,根據(jù)所述操作名、所述截圖在本地的存儲(chǔ)路徑、以及所述相關(guān)參數(shù)生成腳本行。
根據(jù)本發(fā)明的一些實(shí)施例,還包括:
在獲取錄制腳本時(shí)的操作信息之前進(jìn)行設(shè)備截屏將得到的截屏圖像存儲(chǔ)到本地;
當(dāng)接收到對(duì)所述截圖的設(shè)定操作時(shí),彈出所述截屏圖像,供用戶在所述截屏圖像中精細(xì)編輯所述截圖。
根據(jù)一些實(shí)施例,本發(fā)明還提供一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),例如包括指令的存儲(chǔ)器,上述指令可由裝置的處理器執(zhí)行以完成上述方法。例如,非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是ROM、隨機(jī)存取存儲(chǔ)器(RAM)、CD-ROM、磁帶、軟盤和光數(shù)據(jù)存儲(chǔ)設(shè)備等。當(dāng)存儲(chǔ)介質(zhì)中的指令由終端的處理器執(zhí)行時(shí),使得終端能夠執(zhí)行下述方法:將腳本模塊中的原生資源名稱變換為原生資源ID;原生應(yīng)用模塊通過原生資源ID獲取相應(yīng)的原生資源。
本領(lǐng)域技術(shù)人員可以理解,附圖只是示例實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的,因此不能用于限制本發(fā)明的保護(hù)范圍。
本領(lǐng)域技術(shù)人員可以理解上述各模塊可以按照實(shí)施例的描述分布于裝置中,也可以進(jìn)行相應(yīng)變化唯一不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
以上具體地示出和描述了本發(fā)明的示例性實(shí)施例。應(yīng)該理解,本發(fā)明不限于所公開的實(shí)施例,相反,本發(fā)明意圖涵蓋包含在所附權(quán)利要求的精神和范圍內(nèi)的各種修改和等效布置。