本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及一種子元素測試方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,終端可以顯示各種頁面,每個頁面中包括多個元素,例如列表元素、文本元素、圖像元素等。為了保證頁面能夠正常工作,測試終端需要對頁面中的元素進行測試。
由于頁面中包括多個元素,在進行測試的過程中,為了區(qū)分不同的元素,測試終端需要獲取目標元素標識,根據(jù)目標元素標識從頁面中的所有元素中提取與該目標元素標識對應(yīng)的待測試元素,對該待測試元素進行測試。即,由測試終端顯示頁面,模擬終端對頁面中該待測試元素執(zhí)行的操作。
在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)相關(guān)技術(shù)至少存在以下問題:
由于應(yīng)用頁面中包括屬于不同類別的多個子元素,屬于相同類別的子元素對應(yīng)的子元素標識相同,因此僅根據(jù)子元素標識,無法區(qū)分屬于相同類別的多個子元素,導致無法識別和定位子元素,也就無法對子元素進行測試。
技術(shù)實現(xiàn)要素:
為了解決相關(guān)技術(shù)的問題,本發(fā)明實施例提供了一種子元素測試方法及裝置。所述技術(shù)方案如下:
一方面,提供了一種子元素測試方法,所述方法包括:
獲取第一頁面中的目標子元素標識,所述第一頁面包括至少一個元素,每個元素包括至少一個子元素,子元素標識用于標識子元素的類別,屬于相同類別的子元素對應(yīng)的子元素標識相同;
根據(jù)所述目標子元素標識,確定目標集合,所述目標集合中包括所述第一頁面中與所述目標子元素標識對應(yīng)的多個子元素;
根據(jù)確定的索引值,從所述目標集合中提取目標子元素,所述索引值用于指示目標子元素在所述目標集合中的位置;
對所述目標子元素進行模擬操作,得到所述模擬操作的測試結(jié)果,所述測試結(jié)果用于與理論結(jié)果進行比較,以判斷所述目標子元素是否正常工作。
在一種可能的實現(xiàn)方式中,所述根據(jù)確定的索引值,從所述目標集合中提取目標子元素,包括:
獲取所述目標集合的長度,根據(jù)所述長度確定索引值的取值范圍;
遍歷所述取值范圍內(nèi)的每個索引值,根據(jù)當前遍歷到的索引值,從所述目標集合中提取目標子元素。
在另一種可能的實現(xiàn)方式中,所述根據(jù)所述長度確定索引值的取值范圍,包括:
將預(yù)設(shè)初始值作為所述取值范圍的最小值,根據(jù)所述最小值和所述長度確定所述取值范圍的最大值,并根據(jù)所述最小值和所述最大值確定所述取值范圍。
在另一種可能的實現(xiàn)方式中,所述對所述目標子元素進行模擬操作,得到所述模擬操作的測試結(jié)果,包括:
對所述目標子元素進行模擬點擊操作,得到所述模擬點擊操作的點擊測試結(jié)果,所述點擊測試結(jié)果用于與點擊理論結(jié)果進行比較,以判斷所述目標子元素被點擊時是否正常工作。
在另一種可能的實現(xiàn)方式中,所述對所述目標子元素進行模擬操作,得到所述模擬操作的測試結(jié)果,包括:
對所述目標子元素進行模擬顯示操作,得到所述模擬顯示操作的顯示測試結(jié)果,所述顯示測試結(jié)果用于與顯示理論結(jié)果進行比較,以判斷所述目標子元素是否正常顯示。
在另一種可能的實現(xiàn)方式中,所述方法還包括:
對所述第一頁面進行模擬滑動操作,獲取與所述第一頁面關(guān)聯(lián)的第二頁面,所述第二頁面包括所述第一頁面向上滑動時的頁面、所述第一頁面向下滑動時的頁面、所述第一頁面向左滑動時的頁面和所述第一頁面向右滑動時的頁面中的任一項;
根據(jù)所述第二頁面中的目標子元素標識,對所述第二頁面中的目標子元素進行測試。
另一方面,提供了一種子元素測試裝置,所述裝置包括:
第一獲取模塊,用于獲取第一頁面中的目標子元素標識,所述第一頁面包括至少一個元素,每個元素包括至少一個子元素,子元素標識用于標識子元素的類別,屬于相同類別的子元素對應(yīng)的子元素標識相同;
確定模塊,用于根據(jù)所述目標子元素標識,確定目標集合,所述目標集合中包括所述第一頁面中與所述目標子元素標識對應(yīng)的多個子元素;
提取模塊,用于根據(jù)確定的索引值,從所述目標集合中提取目標子元素,所述索引值用于指示目標子元素在所述目標集合中的位置;
第一測試模塊,用于對所述目標子元素進行模擬操作,得到所述模擬操作的測試結(jié)果,所述測試結(jié)果用于與理論結(jié)果進行比較,以判斷所述目標子元素是否正常工作。
在一種可能的實現(xiàn)方式中,所述提取模塊,包括:
獲取單元,用于獲取所述目標集合的長度;
確定單元,用于根據(jù)所述長度確定索引值的取值范圍;
提取單元,用于遍歷所述取值范圍內(nèi)的每個索引值,根據(jù)當前遍歷到的索引值,從所述目標集合中提取目標子元素。
在另一種可能的實現(xiàn)方式中,所述確定單元,還用于將預(yù)設(shè)初始值作為所述取值范圍的最小值,根據(jù)所述最小值和所述長度確定所述取值范圍的最大值,并根據(jù)所述最小值和所述最大值確定所述取值范圍。
在另一種可能的實現(xiàn)方式中,所述第一測試模塊,還用于對所述目標子元素進行模擬點擊操作,得到所述模擬點擊操作的點擊測試結(jié)果,所述點擊測試結(jié)果用于與點擊理論結(jié)果進行比較,以判斷所述目標子元素被點擊時是否正常工作。
在另一種可能的實現(xiàn)方式中,其特征在于,所述第一測試模塊,還用于對所述目標子元素進行模擬顯示操作,得到所述模擬顯示操作的顯示測試結(jié)果,所述顯示測試結(jié)果用于與顯示理論結(jié)果進行比較,以判斷所述目標子元素是否正常顯示。
在另一種可能的實現(xiàn)方式中,所述裝置還包括:
第二獲取模塊,用于對所述第一頁面進行模擬滑動操作,獲取與所述第一頁面關(guān)聯(lián)的第二頁面,所述第二頁面包括所述第一頁面向上滑動時的頁面、所述第一頁面向下滑動時的頁面、所述第一頁面向左滑動時的頁面和所述第一頁面向右滑動時的頁面中的任一項;
第二測試模塊,用于根據(jù)所述第二頁面中的目標子元素標識,對所述第二頁面中的目標子元素進行測試。
本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
本發(fā)明實施例提供的方法,考慮到屬于相同類別的子元素對應(yīng)的子元素標識相同,通過獲取第一頁面中的目標子元素標識,根據(jù)該目標子元素標識確定目標集合,根據(jù)確定的索引值,從該目標集合中提取目標子元素,對該目標子元素進行模擬操作,得到該模擬操作的測試結(jié)果,該測試結(jié)果用于與理論結(jié)果進行比較,以判斷該目標子元素是否正常工作。能根據(jù)目標子元素標識,將不同元素中屬于相同類別的多個子元素集成于同一目標集合中,從而以索引值指示子元素在目標集合中的位置,根據(jù)確定的索引值準確識別和定位目標子元素,進而對該目標子元素進行測試,擴展了測試功能。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實施例提供的子元素測試方法的流程圖;
圖2是本發(fā)明實施例提供的子元素測試方法的流程圖;
圖3是本發(fā)明實施例提供的歌曲排行榜頁面的示意圖;
圖4是本發(fā)明實施例提供的子元素測試裝置的結(jié)構(gòu)示意圖;
圖5是本發(fā)明實施例提供的子元素測試裝置的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實施例提供的子元素測試裝置的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
圖1是本發(fā)明實施例提供的一種子元素測試方法的流程圖,本發(fā)明實施例應(yīng)用于測試終端中,如圖1所示,該子元素測試方法包括以下步驟:
101、獲取第一頁面中的目標子元素標識,該第一頁面包括至少一個元素,每個元素包括至少一個子元素,子元素標識用于標識子元素的類別,不同元素中屬于相同類別的子元素對應(yīng)的子元素標識相同。
102、根據(jù)該目標子元素標識,確定目標集合,該目標集合中包括該第一頁面中與該目標子元素標識對應(yīng)的多個子元素。
103、根據(jù)確定的索引值,從該目標集合中提取目標子元素,該索引值用于指示目標子元素在該目標集合中的位置。
104、對該目標子元素進行模擬操作,得到該模擬操作的測試結(jié)果,該測試結(jié)果用于與理論結(jié)果進行比較,以判斷該目標子元素是否正常工作。
本發(fā)明實施例提供的方法,考慮到屬于相同類別的子元素對應(yīng)的子元素標識相同,通過獲取第一頁面中的目標子元素標識,根據(jù)該目標子元素標識確定目標集合,根據(jù)確定的索引值,從該目標集合中提取目標子元素,對該目標子元素進行模擬操作,得到該模擬操作的測試結(jié)果,該測試結(jié)果用于與理論結(jié)果進行比較,以判斷該目標子元素是否正常工作。能根據(jù)目標子元素標識,將不同元素中屬于相同類別的多個子元素集成于同一目標集合中,從而以索引值指示子元素在目標集合中的位置,根據(jù)確定的索引值準確識別和定位目標子元素,進而對該目標子元素進行測試,擴展了測試功能。
在一種可能的實現(xiàn)方式中,該根據(jù)確定的索引值,從該目標集合中提取目標子元素,包括:
獲取該目標集合的長度,根據(jù)該長度確定索引值的取值范圍;
遍歷該取值范圍內(nèi)的每個索引值,根據(jù)當前遍歷到的索引值,從該目標集合中提取目標子元素。
在另一種可能的實現(xiàn)方式中,該根據(jù)該長度確定索引值的取值范圍,包括:
將預(yù)設(shè)初始值作為該取值范圍的最小值,根據(jù)該最小值和該長度確定該取值范圍的最大值,并根據(jù)該最小值和該最大值確定該取值范圍。
在另一種可能的實現(xiàn)方式中,該對該目標子元素進行模擬操作,得到該模擬操作的測試結(jié)果,包括:
對該目標子元素進行模擬點擊操作,得到該模擬點擊操作的點擊測試結(jié)果,該點擊測試結(jié)果用于與點擊理論結(jié)果進行比較,以判斷該目標子元素被點擊時是否正常工作。
在另一種可能的實現(xiàn)方式中,該對該目標子元素進行模擬操作,得到該模擬操作的測試結(jié)果,包括:
對該目標子元素進行模擬顯示操作,得到該模擬顯示操作的顯示測試結(jié)果,該顯示測試結(jié)果用于與顯示理論結(jié)果進行比較,以判斷該目標子元素是否正常顯示。
在另一種可能的實現(xiàn)方式中,該方法還包括:
對該第一頁面進行模擬滑動操作,獲取與該第一頁面關(guān)聯(lián)的第二頁面,該第二頁面包括該第一頁面向上滑動時的頁面、該第一頁面向下滑動時的頁面、該第一頁面向左滑動時的頁面和該第一頁面向右滑動時的頁面中的任一項;
根據(jù)該第二頁面中的目標子元素標識,對該第二頁面中的目標子元素進行測試。
上述所有可選技術(shù)方案,可以采用任意結(jié)合形成本公開的可選實施例,在此不再一一贅述。
圖2是根據(jù)一示例性實施例示出的一種子元素測試方法的流程圖,本發(fā)明實施例的執(zhí)行主體為測試終端,如圖2所示,該子元素測試方法包括以下步驟:
201、測試終端獲取第一頁面中的目標子元素標識,根據(jù)該目標子元素標識,確定目標集合。
相關(guān)技術(shù)中,待測試的頁面中包括至少一個元素,而每個元素可以包括至少一個子元素。其中,每個元素具有一個元素標識,每個子元素具有一個子元素標識,子元素標識用于標識子元素的類別,屬于相同類別的子元素的子元素標識相同。
在對頁面進行測試的過程中,測試終端不能通過肉眼和思維識別不同元素或不同子元素,因此,測試終端測試時會先獲取目標元素標識,根據(jù)目標元素標識確定待測試的元素。但是,由于屬于相同類別的子元素對應(yīng)的子元素標識相同,導致測試終端僅根據(jù)目標子元素標識,無法區(qū)分屬于相同類別的多個子元素,進而導致無法對子元素進行測試。
圖3是一個歌曲排行榜頁面的示意圖,該歌曲排行榜頁面包括三個歌曲元素,每個歌曲元素均包括屬于歌曲名稱、歌手名稱和歌曲類型這三種類別的子元素,三個歌曲元素的標識分別為“歌曲1”“歌曲2”“歌曲3”,每個歌曲元素和該歌曲元素包括的子元素的關(guān)系可以如下表1所示。那么,當測試終端需要測試子元素“周杰倫”時,根據(jù)子元素標識“Singer”,無法區(qū)分“周杰倫”、“筷子兄弟”“鳳凰傳奇”,導致無法對“周杰倫”進行測試。
表1
而在本發(fā)明實施例中,測試終端可以將屬于相同類別的多個子元素集成于同一目標集合中,根據(jù)子元素在目標集合中的不同位置,準確識別和定位目標子元素,進而對該目標子元素進行測試。
具體地,以對第一頁面進行測試為例,測試終端可以獲取第一頁面中的目標子元素標識,根據(jù)該目標子元素標識,確定目標集合,該目標集合中包括該第一頁面中與該目標子元素標識對應(yīng)的多個子元素。
其中,該測試終端可以為手機、平板電腦等,該測試終端的操作系統(tǒng)可以為安卓操作系統(tǒng)、iOS(蘋果移動操作系統(tǒng))、FirefoxOS(火狐移動操作系統(tǒng))等。該第一頁面為可以顯示于測試終端上的任一頁面,可以為應(yīng)用頁面、網(wǎng)頁頁面等,當然也可以為其他類型的頁面。
第一頁面中包括至少一個元素,該至少一個元素可以包括列表元素、文本元素、聲音元素、按鈕元素等。進一步地,每個元素可以包括至少一個子元素,該至少一個子元素可以包括聲音子元素、圖片子元素、文本子元素等。
其中,每個元素具有一個元素標識,每個子元素具有一個子元素標識。該元素標識用于唯一確定該第一頁面中的元素,可以為元素的名稱、圖案、URL(Uniform Resoure Locator,統(tǒng)一資源定位符)等,該子元素標識用于標識子元素的類別,可以為類別的名稱或者為類別分配的編號等,屬于相同類別的子元素的子元素標識相同。
那么,當測試終端要對該第一頁面中屬于某一類別的子元素進行測試時,獲取待測試的目標子元素標識,根據(jù)該目標子元素標識,確定目標集合,該目標集合中包括該第一頁面中與該目標子元素標識對應(yīng)的多個子元素。
進一步地,該測試終端可以調(diào)用集合獲取函數(shù)獲取該目標集合,該集合獲取函數(shù)用于獲取同一子元素標識對應(yīng)的所有子元素,并構(gòu)成一個集合。該集合獲取函數(shù)的輸入?yún)?shù)為目標子元素標識,輸出參數(shù)為目標集合,則當該測試終端向該集合獲取函數(shù)傳入目標子元素標識后,該集合獲取函數(shù)能夠返回目標集合。
例如,該集合獲取函數(shù)可以為Get Elements函數(shù),該測試終端可以調(diào)用該Get Elements函數(shù)獲取目標集合。例如,基于上述表1的例子,測試終端向該Get Elements函數(shù)傳入目標子元素標識“Singer”,該Get Elements函數(shù)返回歌手名稱集合,該歌手名稱集合為{“周杰倫”、“筷子兄弟”、“鳳凰傳奇”}。
202、測試終端獲取該目標集合的長度,根據(jù)該長度確定索引值的取值范圍。
關(guān)于獲取目標集合長度的過程,該測試終端可以調(diào)用長度獲取函數(shù)獲取該目標集合的長度。該長度獲取函數(shù)的輸入?yún)?shù)為目標集合,輸出參數(shù)為目標集合的長度,則當該測試終端向該長度獲取函數(shù)傳入目標集合后,該長度獲取函數(shù)能夠返回目標集合的長度。
例如,該長度獲取函數(shù)可以為Get Length函數(shù),該測試終端可以調(diào)用Get Length函數(shù)獲取該目標集合的長度。例如,基于上述表1的例子,該測試終端可以向該Get Length函數(shù)傳入歌手名稱集合{“周杰倫”、“筷子兄弟”、“鳳凰傳奇”},則該Get Length函數(shù)輸出該歌手名稱集合的長度3。
關(guān)于根據(jù)長度確定索引值的取值范圍的過程:為了識別和定位目標子元素,測試終端需要確定目標子元素在目標集合的位置,因此,測試終端需要獲取索引值,該索引值用于指示目標子元素在該目標集合的位置。
該索引值的取值范圍根據(jù)該目標集合的長度確定,測試終端在獲取目標集合的長度后,可以將預(yù)設(shè)初始值作為該取值范圍的最小值,該預(yù)設(shè)初始值可以為0、1等,測試終端可以根據(jù)該最小值和該長度確定該取值范圍的最大值,例如可以將該最小值和該長度相加并減一,得到該最大值。
測試終端在得到該索引值的最小值和最大值后,可以根據(jù)該最小值和該最大值確定該取值范圍。需要說明的是,由于索引值為整數(shù),因此索引值的取值范圍當然也限于整數(shù)范圍的數(shù)。相鄰索引值之間的差值固定,例如可以為1,則該取值范圍可以為(1,2,3)。
基于上述步驟201中表1的例子,在該歌手名稱集合為{“周杰倫”、“筷子兄弟”、“鳳凰傳奇”}中,索引值的最小值可以為1,則子元素“周杰倫”的索引值為1,子元素“筷子兄弟”的索引值為2,“鳳凰傳奇”的索引值為3。
203、測試終端遍歷該取值范圍內(nèi)的每個索引值,根據(jù)當前遍歷到的索引值,從該目標集合中提取目標子元素。
該測試終端可以確定集合提取函數(shù),該集合提取函數(shù)用于從目標集合中提取目標子元素。該集合提取函數(shù)的輸入?yún)?shù)為索引值和目標集合,該集合提取函數(shù)的輸出參數(shù)為目標子元素,則當該測試終端向該集合提取函數(shù)傳入索引值和目標集合后,該集合提取函數(shù)可以根據(jù)確定的索引值,返回與該索引值對應(yīng)的目標子元素。
具體地,該集合提取函數(shù)的代碼可以如下:
Def select element(self,elements,index)
{
%注釋:select element為集合提取函數(shù)的名稱,elements為目標集合,index為索引值,element為目標子元素
element=elements[int(index)]
Return element
}
基于上述表1的例子,該測試終端可以向集合提取函數(shù)傳入歌手名稱集合{“周杰倫”、“筷子兄弟”、“鳳凰傳奇”}和索引值2,則該集合提取函數(shù)將返回“筷子兄弟”。
204、測試終端對該目標子元素進行模擬操作,得到該模擬操作的測試結(jié)果,并繼續(xù)遍歷該取值范圍內(nèi)的下一個索引值,執(zhí)行步驟203-204,對下一個目標子元素進行測試,直至當前索引值超過該取值范圍時停止。
優(yōu)選地,該測試終端可以調(diào)用循環(huán)控制函數(shù),該循環(huán)控制函數(shù)的輸入?yún)?shù)為控制變量、控制變量的取值范圍、控制變量的調(diào)整方式和模擬操作的類型,且該循環(huán)控制函數(shù)中包括當前的控制變量處于該取值范圍時執(zhí)行模擬操作。
那么,該測試終端可以將索引值作為該循環(huán)控制函數(shù)的控制變量,向該循環(huán)控制函數(shù)傳入索引值、索引值的取值范圍、索引值的調(diào)整方式和模擬操作類型,通過該循環(huán)控制函數(shù),根據(jù)當前的索引值從目標集合中提取目標子元素,對該目標子元素進行模擬操作,得到該模擬操作的測試結(jié)果,并根據(jù)該調(diào)整方式獲取該取值范圍內(nèi)的下一個索引值,直到索引值超過該取值范圍時,才不再執(zhí)行循環(huán)過程。通過循環(huán)控制函數(shù),該測試終端可以對該目標集合中處于不同位置的所有目標子元素依次進行測試。
其中,該循環(huán)控制函數(shù)可以為for函數(shù)、while函數(shù)等,本發(fā)明實施例對此不做限定。
關(guān)于測試終端對該目標子元素進行模擬操作的過程,是指為了測試該第一頁面中的各個目標子元素能否正常工作,通常由測試終端顯示該第一頁面,模擬終端對該第一頁面中的各個目標子元素執(zhí)行的操作。例如,可以對按鈕控件執(zhí)行點擊操作,對文本控件執(zhí)行顯示操作,對聲音數(shù)據(jù)執(zhí)行播放操作等。測試終端通過模擬不同類型的操作可以對該目標子元素的不同功能進行測試,本發(fā)明實施例對此不做限定。
在對該目標子元素進行模擬操作后,測試終端可以得到該模擬操作的測試結(jié)果。該測試結(jié)果與該模擬操作對應(yīng),該測試結(jié)果用于與理論結(jié)果進行比較,以判斷該目標子元素能否正常工作。相應(yīng)地,該測試結(jié)果也可以代表該目標子元素在除該測試終端以外的終端上進行顯示時能否正常工作。
其中,該理論結(jié)果是指當該目標子元素運行正常時,對該目標子元素進行模擬操作時應(yīng)得的結(jié)果。對該目標子元素進行模擬操作時,如果得到的測試結(jié)果與理論結(jié)果相同,可以確定該目標子元素運行正常,如果得到的測試結(jié)果與理論結(jié)果不同,可以確定該目標子元素運行錯誤。
具體地,該測試終端可以預(yù)先存儲該理論結(jié)果,當對該目標子元素進行模擬操作后,可以將該測試結(jié)果與該理論結(jié)果進行比較,判斷該測試結(jié)果與預(yù)先存儲的理論結(jié)果是否相同,從而確定該目標子元素能否正常工作。當然,也可以由測試人員通過分析確定模擬操作的理論結(jié)果,當通過測試終端得到測試結(jié)果后,人工地判斷該測試結(jié)果與理論結(jié)果是否相同,從而確定該目標子元素能否正常工作,本發(fā)明實施例對此不做限定。
具體地,針對不同類型的模擬操作,該步驟204可以包括以下步驟2041-2042:
2041、測試終端對該目標子元素進行模擬點擊操作,得到該模擬點擊操作的點擊測試結(jié)果。
具體地,該測試終端可以獲取點擊測試函數(shù),該點擊測試函數(shù)的輸入?yún)?shù)為目標子元素,輸出參數(shù)為該模擬點擊操作的響應(yīng)結(jié)果,通過調(diào)用該點擊測試函數(shù),該測試終端可以對該目標子元素進行模擬點擊操作。
該點擊測試函數(shù)的代碼可以如下:
Def click_by_element_given(self,element)
{
%注釋:element為目標子元素”
Self._info(“click_by_element_given”)
element.click()
}
該模擬點擊操作用于測試該目標子元素能否被正常點擊,當對該目標子元素進行模擬點擊操作時,該測試終端可以得到該模擬點擊操作的點擊測試結(jié)果,該點擊測試結(jié)果用于與點擊理論結(jié)果進行比較,以判斷該目標子元素被點擊時是否正常工作。
在一種可能的實現(xiàn)方式中,該目標子元素為鏈接形式的子元素時,該目標子元素與一個鏈接地址關(guān)聯(lián),且該鏈接地址指向一個頁面,那么該測試終端可以將該頁面作為點擊理論結(jié)果,在對該目標子元素進行模擬點擊操作,獲取到點擊測試結(jié)果后,可以將該點擊測試結(jié)果與該點擊理論結(jié)果進行比較,即,判斷當對該目標子元素執(zhí)行模擬點擊操作時,其打開的頁面是否為該目標子元素關(guān)聯(lián)的鏈接地址指向的頁面,當打開的頁面即為該目標子元素關(guān)聯(lián)的鏈接地址指向的頁面時,確定該目標子元素被點擊時能夠正常工作。
在另一種可能的實現(xiàn)方式中,該目標子元素與指定信息關(guān)聯(lián),該測試終端在對該目標子元素進行模擬點擊操作,那么該測試終端可以將該指定信息作為點擊理論結(jié)果,在對該目標子元素進行模擬點擊操作,獲取到點擊測試結(jié)果后,可以將該點擊測試結(jié)果與該點擊理論結(jié)果進行比較,即,判斷當對該目標子元素執(zhí)行模擬點擊操作時,其彈出的信息是否為該目標子元素關(guān)聯(lián)的指定信息,當該目標子元素彈出的信息即為該目標子元素關(guān)聯(lián)的指定信息時,確定該目標子元素被點擊時能夠正常工作。
其中,指定信息可以為一個特定的窗口、文本框、廣告等,本發(fā)明實施例對此不做限定。例如,目標子元素“筷子兄弟”關(guān)聯(lián)的指定信息可以為“廣受廣場舞歡迎的歌手組合”。
當然,也可以由測試人員在通過該測試終端得到該目標子元素的點擊測試結(jié)果后,分析該目標子元素的點擊理論結(jié)果,通過判斷該點擊測試結(jié)果與該點擊理論結(jié)果是否相同,確定該目標子元素被點擊時能否正常工作,本發(fā)明實施例對此不做限定。
2042、測試終端對該目標子元素進行模擬顯示操作,得到該模擬顯示操作的顯示測試結(jié)果。
其中,該模擬顯示操作用于測試該目標子元素能否正常顯示,當對該目標子元素進行模擬顯示操作時,該測試終端可以得到該模擬顯示操作的顯示測試結(jié)果,該顯示測試結(jié)果用于與顯示理論結(jié)果進行比較,以判斷該目標子元素是否正常顯示。
具體地,該測試終端可以確定顯示測試函數(shù),該顯示測試函數(shù)的輸入?yún)?shù)為目標子元素,輸出參數(shù)為該模擬顯示操作的顯示測試結(jié)果,通過該顯示測試函數(shù)該測試終端可以對該目標子元素進行模擬顯示操作。
該顯示測試函數(shù)的代碼可以如下:
Def get_text(self,element)
{
%注釋:element為目標子元素”
Self._info(“get the text of the element”)
Return elment.text
}
具體地,該測試終端可以預(yù)先存儲顯示理論結(jié)果,當對該目標子元素進行模擬顯示操作后,可以將該顯示測試結(jié)果與該顯示理論結(jié)果進行比較,判斷該顯示測試結(jié)果與顯示預(yù)先存儲的理論結(jié)果是否相同,從而確定該目標子元素能否正常顯示。當然,也可以由測試人員通過分析確定模擬顯示操作的理論顯示結(jié)果,當通過測試終端得到顯示測試結(jié)果后,人工地判斷該顯示測試結(jié)果與顯示理論結(jié)果是否相同,從而確定該目標子元素能否正常顯示,本發(fā)明實施例對此不做限定。
需要說明的是,測試終端還可以對該目標子元素進行其他模擬操作,例如,當該目標元素為音樂時,該測試終端可以對該目標子元素進行模擬播放操作,當該目標元素為輸入欄時,該測試終端可以對該目標子元素進行模擬輸入操作,本發(fā)明實施例對此不做限定。
而且,本發(fā)明實施例以根據(jù)目標子元素標識對該第一頁面中的對應(yīng)目標子元素進行測試為例,而實際應(yīng)用中,在對該第一頁面進行測試時,由于該第一頁面中可能包括屬于多個類別的子元素,因此可以根據(jù)相應(yīng)的多個目標子元素標識分別進行測試,從而完成該第一頁面中的所有子元素的測試工作。
205、測試終端對該第一頁面進行模擬滑動操作,獲取與該第一頁面關(guān)聯(lián)的第二頁面,根據(jù)該第二頁面中的目標子元素標識,對該第二頁面中的目標子元素進行測試。
該測試終端對該第一頁面進行測試之后,還可以對該第一頁面關(guān)聯(lián)的第二頁面進行測試,從而判斷該第二頁面能否正常工作。
因此,以第一頁面和第二頁面為例,測試終端可以對該第一頁面進行模擬滑動操作,獲取與該第一頁面關(guān)聯(lián)的第二頁面。其中,該第二頁面包括該第一頁面向上滑動時的頁面、該第一頁面向下滑動時的頁面、該第一頁面向左滑動時的頁面和該第一頁面向右滑動時的頁面中的任一項。
進一步地,該測試終端可以調(diào)用滑動函數(shù)進行模擬滑動操作,該滑動函數(shù)用于對當前頁面進行滑動,并獲取與當前頁面關(guān)聯(lián)的頁面。該滑動函數(shù)的輸入?yún)?shù)為當前頁面滑動起始點的橫坐標、當前頁面滑動起始點的縱坐標、當前頁面滑動終止點的橫坐標、當前頁面滑動終止點的縱坐標、滑動時間間隔,該滑動函數(shù)的輸出參數(shù)為與當前頁面關(guān)聯(lián)的頁面。
例如,該滑動函數(shù)可以為swipe函數(shù),向swipe函數(shù)傳入的參數(shù)不同,可以模擬向上滑動、向下滑動、向左滑動和向右滑動的不同類型的滑動操作,相應(yīng)地,獲取到的與該第一頁面關(guān)聯(lián)的第二頁面可以為不同滑動方向上的頁面。也即是,該滑動過程可以包括:
1、當向該swipe函數(shù)傳入的滑動起始點的橫坐標和滑動終止點的橫坐標相同,滑動起始點的縱坐標大于滑動終止點的縱坐標相同時,測試終端將獲取該第一頁面向上滑動時的頁面。
2、當向該swipe函數(shù)傳入的滑動起始點的橫坐標和滑動終止點的橫坐標相同,滑動起始點的縱坐標小于滑動終止點的縱坐標相同時,測試終端將獲取該第一頁面向下滑動時的頁面。
3、當向該swipe函數(shù)傳入的滑動起始點的縱坐標和滑動終止點的縱坐標相同,滑動起始點的橫坐標大于滑動終止點的縱坐標時,測試終端將獲取該第一頁面向左滑動時的頁面。
4、當向該swipe函數(shù)傳入的滑動起始點的縱坐標和滑動終止點的縱坐標相同,滑動起始點的橫坐標小于滑動終止點的縱坐標時,測試終端將獲取該第一頁面向右滑動時的頁面。
當測試終端獲取該第二頁面后,可以根據(jù)該第二頁面中的目標子元素標識,對該第二頁面中的目標子元素進行測試。也即是,根據(jù)該第二頁面中的目標子元素標識,確定目標集合,獲取該目標集合的長度,根據(jù)該長度確定索引值的取值范圍,遍歷該取值范圍內(nèi)的每個索引值,根據(jù)當前遍歷到的索引值,從該目標集合中提取目標子元素,對該目標子元素進行模擬操作,得到該模擬操作的測試結(jié)果。
在相關(guān)技術(shù)中,當兩個子元素屬于相同類別時,對應(yīng)于同一個子元素標識,而測試終端僅依靠子元素標識識別子元素,無法區(qū)分不同的子元素。而本發(fā)明實施例中,將子元素標識和索引值這兩種數(shù)據(jù)結(jié)合起來,作為識別任一子元素所使用的的數(shù)據(jù)。那么,對于任意兩個子元素,當這兩個子元素屬于不同類別時,這兩個子元素的子元素標識是不同的,測試終端能夠根據(jù)不同的子元素標識,區(qū)分不同的子元素,而當這兩個子元素屬于相同類別時,這兩個子元素的索引值是不同的,測試終端能夠根據(jù)不同的索引值,區(qū)分不同的子元素。也即是,無論任意兩個子元素是否屬于相同類別,測試終端始終能夠區(qū)分不同的子元素,可以實現(xiàn)從多個子元素中提取任意目標子元素。
例如,基于上述表1的例子,對于子元素“周杰倫”和子元素“青花瓷”而言,“周杰倫”的子元素標識為“singer”,“青花瓷”的子元素標識為“music”,測試終端能夠根據(jù)“singer”和“music”區(qū)分“周杰倫”和“青花瓷”。而對于子元素“周杰倫”和子元素“筷子兄弟”而言,雖然這兩個子元素的子元素標識都是“singer”,然而“周杰倫”的索引值為1,“筷子兄弟”的索引值為2,測試終端能夠根據(jù)索引值是1還是2,區(qū)分“周杰倫”和筷子兄弟”。
進一步地,該測試終端可以安裝測試工具,通過測試工具對該第一頁面進行測試,該測試工具可以為Appium、Robotium、UIAutomator等。
本發(fā)明實施例提供的方法,考慮到屬于相同類別的子元素對應(yīng)的子元素標識相同,通過獲取第一頁面中的目標子元素標識,根據(jù)該目標子元素標識確定目標集合,根據(jù)確定的索引值,從該目標集合中提取目標子元素,對該目標子元素進行模擬操作,得到該模擬操作的測試結(jié)果,該測試結(jié)果用于與理論結(jié)果進行比較,以判斷該目標子元素是否正常工作。能根據(jù)目標子元素標識,將不同元素中屬于相同類別的多個子元素集成于同一目標集合中,從而以索引值指示子元素在目標集合中的位置,根據(jù)確定的索引值準確識別和定位目標子元素,進而對該目標子元素進行測試,擴展了測試功能。
圖4是本發(fā)明實施例提供的一種子元素測試裝置的結(jié)構(gòu)示意圖,如圖4所示,該裝置包括第一獲取模塊401、確定模塊402、提取模塊403和第一測試模塊404。
第一獲取模塊401,用于獲取第一頁面中的目標子元素標識,該第一頁面包括至少一個元素,每個元素包括至少一個子元素,子元素標識用于標識子元素的類別,屬于相同類別的子元素對應(yīng)的子元素標識相同;
確定模塊402,用于根據(jù)該目標子元素標識,確定目標集合,該目標集合中包括該第一頁面中與該目標子元素標識對應(yīng)的多個子元素;
提取模塊403,用于根據(jù)確定的索引值,從該目標集合中提取目標子元素,該索引值用于指示目標子元素在該目標集合中的位置;
第一測試模塊404,用于對該目標子元素進行模擬操作,得到該模擬操作的測試結(jié)果,該測試結(jié)果用于與理論結(jié)果進行比較,以判斷該目標子元素是否正常工作。
本發(fā)明實施例提供的裝置,考慮到屬于相同類別的子元素對應(yīng)的子元素標識相同,通過獲取第一頁面中的目標子元素標識,根據(jù)該目標子元素標識確定目標集合,根據(jù)確定的索引值,從該目標集合中提取目標子元素,對該目標子元素進行模擬操作,得到該模擬操作的測試結(jié)果,該測試結(jié)果用于與理論結(jié)果進行比較,以判斷該目標子元素是否正常工作。能根據(jù)目標子元素標識,將不同元素中屬于相同類別的多個子元素集成于同一目標集合中,從而以索引值指示子元素在目標集合中的位置,根據(jù)確定的索引值準確識別和定位目標子元素,進而對該目標子元素進行測試,擴展了測試功能。
在一種可能的實現(xiàn)方式中,該提取模塊403,包括:
獲取單元,用于獲取該目標集合的長度;
確定單元,用于根據(jù)該長度確定索引值的取值范圍;
提取單元,用于遍歷該取值范圍內(nèi)的每個索引值,根據(jù)當前遍歷到的索引值,從該目標集合中提取目標子元素。
在另一種可能的實現(xiàn)方式中,該確定單元,還用于將預(yù)設(shè)初始值作為該取值范圍的最小值,根據(jù)該最小值和該長度確定該取值范圍的最大值,并根據(jù)該最小值和該最大值確定該取值范圍。
在另一種可能的實現(xiàn)方式中,該第一測試模塊404,還用于對該目標子元素進行模擬點擊操作,得到該模擬點擊操作的點擊測試結(jié)果,該點擊測試結(jié)果用于與點擊理論結(jié)果進行比較,以判斷該目標子元素被點擊時是否正常工作。
在另一種可能的實現(xiàn)方式中,該第一測試模塊404,還用于對該目標子元素進行模擬顯示操作,得到該模擬顯示操作的顯示測試結(jié)果,該顯示測試結(jié)果用于與顯示理論結(jié)果進行比較,以判斷該目標子元素是否正常顯示。
在另一種可能的實現(xiàn)方式中,參見圖5,該裝置還包括:
第二獲取模塊405,用于對該第一頁面進行模擬滑動操作,獲取與該第一頁面關(guān)聯(lián)的第二頁面,該第二頁面包括該第一頁面向上滑動時的頁面、該第一頁面向下滑動時的頁面、該第一頁面向左滑動時的頁面和該第一頁面向右滑動時的頁面中的任一項;
第二測試模塊406,用于根據(jù)該第二頁面中的目標子元素標識,對該第二頁面中的目標子元素進行測試。
需要說明的是:上述實施例提供的子元素測試裝置在測試子元素時,僅以上述各功能模塊的劃分進行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將測試終端的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的子元素測試裝置與子元素測試方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。
本實施例提供了一種終端,該終端可以用于執(zhí)行上述各個實施例中提供的子元素測試方法。參見圖6,該終端600包括:
終端600可以包括RF(Radio Frequency,射頻)電路110、包括有一個或一個以上計算機可讀存儲介質(zhì)的存儲器120、輸入單元130、顯示單元140、傳感器150、音頻電路160、WiFi(Wireless Fidelity,無線保真)模塊170、包括有一個或者一個以上處理核心的處理器180、以及電源60等部件。本領(lǐng)域技術(shù)人員可以理解,圖6中示出的終端結(jié)構(gòu)并不構(gòu)成對終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:
RF電路110可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,交由一個或者一個以上處理器180處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路110包括但不限于天線、至少一個放大器、調(diào)諧器、一個或多個振蕩器、用戶身份模塊(SIM)卡、收發(fā)信機、耦合器、LNA(Low Noise Amplifier,低噪聲放大器)、雙工器等。此外,RF電路110還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。該無線通信可以使用任一通信標準或協(xié)議,包括但不限于GSM(Global System of Mobile communication,全球移動通訊系統(tǒng))、GPRS(General Packet Radio Service,通用分組無線服務(wù))、CDMA(Code Division Multiple Access,碼分多址)、WCDMA(Wideband Code Division Multiple Access,寬帶碼分多址)、LTE(Long Term Evolution,長期演進)、電子郵件、SMS(Short Messaging Service,短消息服務(wù))等。
存儲器120可用于存儲軟件程序以及模塊,處理器180通過運行存儲在存儲器120的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器120可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)終端600的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器120可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。相應(yīng)地,存儲器120還可以包括存儲器控制器,以提供處理器180和輸入單元130對存儲器120的訪問。
輸入單元130可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標、操作桿、光學或者軌跡球信號輸入。具體地,輸入單元130可包括觸敏表面131以及其他輸入設(shè)備132。觸敏表面131,也稱為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏表面131上或在觸敏表面131附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置。可選的,觸敏表面131可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點坐標,再送給處理器180,并能接收處理器180發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實現(xiàn)觸敏表面131。除了觸敏表面131,輸入單元130還可以包括其他輸入設(shè)備132。具體地,其他輸入設(shè)備132可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標、操作桿等中的一種或多種。
顯示單元140可用于顯示由用戶輸入的信息或提供給用戶的信息以及終端600的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標、視頻和其任意組合來構(gòu)成。顯示單元140可包括顯示面板141,可選的,可以采用LCD(Liquid Crystal Display,液晶顯示器)、OLED(Organic Light-Emitting Diode,有機發(fā)光二極管)等形式來配置顯示面板141。進一步的,觸敏表面131可覆蓋顯示面板141,當觸敏表面131檢測到在其上或附近的觸摸操作后,傳送給處理器180以確定觸摸事件的類型,隨后處理器180根據(jù)觸摸事件的類型在顯示面板141上提供相應(yīng)的視覺輸出。雖然在圖6中,觸敏表面131與顯示面板141是作為兩個獨立的部件來實現(xiàn)輸入和輸入功能,但是在某些實施例中,可以將觸敏表面131與顯示面板141集成而實現(xiàn)輸入和輸出功能。
終端600還可包括至少一種傳感器150,比如光傳感器、運動傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板141的亮度,接近傳感器可在終端600移動到耳邊時,關(guān)閉顯示面板141和/或背光。作為運動傳感器的一種,重力加速度傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計姿態(tài)校準)、振動識別相關(guān)功能(比如計步器、敲擊)等;至于終端600還可配置的陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。
音頻電路160、揚聲器161,傳聲器162可提供用戶與終端600之間的音頻接口。音頻電路160可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P聲器161,由揚聲器161轉(zhuǎn)換為聲音信號輸出;另一方面,傳聲器162將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路160接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器180處理后,經(jīng)RF電路110以發(fā)送給比如另一終端,或者將音頻數(shù)據(jù)輸出至存儲器120以便進一步處理。音頻電路160還可能包括耳塞插孔,以提供外設(shè)耳機與終端600的通信。
WiFi屬于短距離無線傳輸技術(shù),終端600通過WiFi模塊170可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖6示出了WiFi模塊170,但是可以理解的是,其并不屬于終端600的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。
處理器180是終端600的控制中心,利用各種接口和線路連接整個手機的各個部分,通過運行或執(zhí)行存儲在存儲器120內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器120內(nèi)的數(shù)據(jù),執(zhí)行終端600的各種功能和處理數(shù)據(jù),從而對手機進行整體監(jiān)控??蛇x的,處理器180可包括一個或多個處理核心;優(yōu)選的,處理器180可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖?,上述調(diào)制解調(diào)處理器也可以不集成到處理器180中。
終端600還包括給各個部件供電的電源60(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器180邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理充電、放電、以及功耗管理等功能。電源60還可以包括一個或一個以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。
盡管未示出,終端600還可以包括攝像頭、藍牙模塊等,在此不再贅述。具體在本實施例中,終端的顯示單元是觸摸屏顯示器,終端還包括有存儲器,以及一個或者一個以上的程序,其中一個或者一個以上程序存儲于存儲器中,且經(jīng)配置以由一個或者一個以上處理器執(zhí)行。該一個或者一個以上程序包含用于實施上述實施例中測試終端所執(zhí)行操作的指令。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。