本申請涉及界面控件獲取技術,尤其涉及界面控件的獲取方法、界面控件的測試方法及界面控件的獲取裝置、界面控件的測試裝置。
背景技術:
現(xiàn)有技術中,獲取用戶界面(userinterface,ui)的控件的方法通常需要根據(jù)控件類型調用不同的控件方法來獲取控件,例如,uiselector.classname(stringclassname)方法通過傳入類名字符串獲取控件,uiselector.text(stringtext)方法通過傳入顯示文本字符串獲取控件。當控件存在多種類型時,需要調用多個接口來獲取控件,且所調用的控件方法(如classname(),text())需要固定寫在代碼中,如果控件類型或屬性發(fā)生變動,就需要修改代碼,或改用其他接口獲取控件。
技術實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┙缑婵丶墨@取方法、界面控件的測試方法及界面控件的獲取裝置、界面控件的測試裝置,以解決現(xiàn)有技術的問題。
根據(jù)本申請實施例的第一方面,提供一種界面控件的獲取方法,該方法包括步驟:
通過指定控件接口獲取至少一種目標控件的控件參數(shù);控件參數(shù)包括控件類型和特征值,所述特征值用于唯一標識目標控件;
通過反射機制封裝所述控件類型并獲得與所述特征值所對應的目標控件。
根據(jù)本申請實施例的第二方面,提供一種界面控件的測試方法,該方法 包括步驟:
通過指定控件接口獲取至少一種目標控件的控件參數(shù);控件參數(shù)包括控件類型和特征值,所述特征值用于唯一標識目標控件;
通過反射機制封裝所述控件類型并獲得與所述特征值所對應的目標控件;
對所述目標控件進行測試。
根據(jù)本申請實施例的第三方面,提供一種界面控件的獲取裝置,包括:
參數(shù)獲取模塊,用于通過指定控件接口獲取至少一種目標控件的控件參數(shù);控件參數(shù)包括控件類型和特征值,所述特征值用于唯一標識目標控件;
控件獲取模塊,用于通過反射機制封裝所述控件類型并獲得與所述特征值所對應的目標控件。
根據(jù)本申請實施例的第四方面,提供一種界面控件的測試裝置,包括:
控件獲取接口,用于通過指定控件接口獲取至少一種目標控件的控件參數(shù);控件參數(shù)包括控件類型和特征值,所述特征值用于唯一標識目標控件;通過反射機制封裝所述控件類型并獲得與所述特征值所對應的目標控件;
控件驗證接口,用于對所述目標控件進行測試。
本申請獲取控件時,通過反射機制使得不同的控件類型都可以通過指定的控件接口實現(xiàn)獲取,避免了需要事先確定類型調用不同接口的靜態(tài)實現(xiàn)方式。另外,指定的控件接口可以獲取不同的控件類型,使得控件類型可以通過代碼動態(tài)決定,從而在后續(xù)控件類型有變動時可以通過修改控件接口的代碼而不必修改獲取每個控件部分代碼。
附圖說明
圖1為本申請實施例中界面控件的獲取方法的流程圖;
圖2為本申請實施例中測試方法的流程圖;
圖3為本申請一應用場景下的流程圖;
圖4為本申請界面控件的獲取裝置/測試裝置的硬件架構圖;
圖5為測試方法及獲取裝置的邏輯框圖;
圖6為測試裝置的邏輯框圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本申請相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本申請的一些方面相一致的裝置和方法的例子。
在本申請使用的術語是僅僅出于描述特定實施例的目的,而非旨在限制本申請。在本申請和所附權利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義。還應當理解,本文中使用的術語“和/或”是指并包含一個或多個相關聯(lián)的列出項目的任何或所有可能組合。
應當理解,盡管在本申請可能采用術語第一、第二、第三等來描述各種信息,但這些信息不應限于這些術語。這些術語僅用來將同一類型的信息彼此區(qū)分開。例如,在不脫離本申請范圍的情況下,第一信息也可以被稱為第二信息,類似地,第二信息也可以被稱為第一信息。取決于語境,如在此所使用的詞語“如果”可以被解釋成為“在……時”或“當……時”或“響應于確定”。
本申請中,控件可以是一種用戶界面的界面元素,控件顯示的信息排列可以由用戶改變,例如視窗、文本框、滑動條、下拉式菜單等。用戶界面可以是應用程序客戶端的用戶界面,或瀏覽器、操作系統(tǒng)應用的用戶界面等。用戶界面可以通過設備的顯示裝置呈現(xiàn)給用戶,設備可以是任何可以呈現(xiàn)用戶界面的設備,例如個人電腦、平板電腦、移動終端、智能家居設備、車載設備等等。
本申請?zhí)峁┑墨@取界面控件的流程可參考圖1。
s101,通過指定控件接口獲取至少一種目標控件的控件參數(shù);控件參數(shù) 包括控件類型、特征值,特征值用于唯一標識目標控件;
s102,通過反射機制封裝所述控件類型,并獲得與所述特征值所對應的目標控件。
本申請創(chuàng)建了統(tǒng)一的控件接口,通過此控件接口獲取到不止一種的控件參數(shù)。
作為例子,控件參數(shù)可以統(tǒng)一預先存儲于一個集合中。除了獲取控件所需要的控件參數(shù),該集合中還可以包括其他參數(shù),例如用來測試控件的設置參數(shù)是否正確的相關參數(shù)(例如控件名稱、文本描述、屬性、屬性值等信息)。集合可以以二維數(shù)組的形式存儲各個控件參數(shù)。控件接口可遍歷集合中的所有數(shù)組獲取控件參數(shù)。
統(tǒng)一將控件參數(shù)保存在集合中可以避免分散處理,但不排除控件接口通過其他分散處理方式獲取控件參數(shù),例如可以從多個文件中分別讀取各個控件的控件參數(shù)。
某些場景下,保存控件參數(shù)的集合可以存儲于配置文件中,控件接口通過讀取配置文件以獲得控件參數(shù);另一些場景下,可以將保存控件參數(shù)的集合存儲在服務器,控件接口可以通過所在的設備與服務器交互獲取控件參數(shù),對于其他獲取控件參數(shù)的例子不再一一列舉。
s102階段中,本申請利用反射機制(method)獲取控件,反射機制可通過java實現(xiàn)。反射機制可以使設計者創(chuàng)建的代碼在運行時裝配,無需在組件之間進行源代表鏈接。本申請通過反射機制可以實現(xiàn)批量獲取多個目標控件。
由于控件類型的多樣化,可以使用反射機制將控件類型進行封裝以獲取不同類型的控件,作為例子,具體步驟可以是:
首先將控件類型封裝并獲得控件類型所對應的方法名稱字符串,利用反射機制獲取與控件類型對應的目標控件的方法;再調用所獲得的目標控件的方法,并傳入該控件類型對應的特征值,獲得該特征值所對應的目標控件。在某些場合,單一的字符串可以作為特征值,在另一些場合,則需要多于一 個的字符串的組合來構成特征值。為了便于在界面存在多個相同控件時區(qū)分各個控件,還可以標識出要查找的控件在結果中的次序。
可以看出,控件獲取可以使用本申請?zhí)峁┑慕y(tǒng)一控件接口實現(xiàn),不同的控件類型都可以通過這個控件接口實現(xiàn)獲取,避免了需要事先確定類型調用不同接口的靜態(tài)實現(xiàn)方式。另外,通過指定的控件接口可以獲取不同的控件類型取,使得控件類型可以通過代碼動態(tài)決定,從而在后續(xù)控件類型有變動時可以通過修改控件接口的代碼而不必修改獲取每個控件部分代碼。
通過以上獲取控件的方式獲取控件后,可以應用于各種場合,圖2是將所獲取的控件進行ui測試的例子。
參考圖2,s101,通過指定控件接口獲取至少一種目標控件的控件參數(shù);控件參數(shù)包括控件類型、特征值,特征值用于唯一標識目標控件;
s102,通過反射機制封裝所述控件類型,并獲得與所述特征值所對應的目標控件;
s201,對目標控件進行測試。
對于s101和s102獲取控件的過程不予贅述。
可以參照現(xiàn)有技術,調用每個目標控件的驗證方法對所獲取到的目標控件分別來進行測試,另外,也可以參照如下方式,通過統(tǒng)一的驗證接口統(tǒng)一對多個目標控件進行測試。
不同控件需要測試的條件可以不同,例如,對于一些控件,僅需要驗證該控件在界面上是否存在;對于另一些控件,需要驗證該控件在界面上存在且可用;還有一些控件,需要還需要驗證控件的某些屬性以及屬性的值設置是否正確(例如,對于button控件,需要測試該控件可用屬性(enable)、是聚焦屬性(focus)以及屬性值(true、false))。因此,作為例子,s201階段的過程可以是對目標控件進行以下一項或多項的測試:
判斷目標控件是否存在;
當所述目標控件存在時,判斷所述目標控件是否可用;
當所述目標控件可用時,判斷所述目標控件的待檢測的屬性及屬性值設 置是否正確。
在一個例子中,可以輸出測試結果,例如,可以根據(jù)s102的輸出結果判斷是否存在目標控件,如果不存在,則輸出錯誤日志;如果存在該目標控件,則進一步獲取該目標控件的“enable”屬性,如果該屬性為不可用,則輸出錯誤日志;如果該屬性為可用,則進一步獲取該目標控件的屬性及屬性值,然后與預設值對比,如果目標控件的屬性及屬性值與預設值不對應,則輸出錯誤日志。作為例子,將所獲取的目標控件的屬性及屬性值比對的方式的方式可以是二者進行“與”操作。
一個例子中,需要驗證的控件參數(shù)的預設值(即在控件設置正確的狀態(tài)下的各種屬性及屬性值)可以全部保存在上文所述的集合中。在存儲時,可以對控件的屬性及屬性值以二次冪的形式賦值,以下是集合的一個實例說明。集合中保存有待驗證的控件參數(shù)的預設值:控件參數(shù)“checkable”、“uncheckable”、“checked”、“unchecked”。各控件參數(shù)被賦予不同的值,例如checkable的值為0x0001、uncheckable的值為0x0002、checked的值為0x0004、unchecked的值為0x0008。
可以定義一個二維數(shù)組,遍歷二維數(shù)組來檢查各個待驗證的目標控件的屬性。在獲取到目標控件的屬性及屬性值以后,根據(jù)集合中的賦值規(guī)則轉換成相應的二進制,然后與二維數(shù)組中的對應數(shù)組項中的值做比對,如果一致,則認為該屬性設置正確,否則,輸出錯誤日志。
以下為一個測試控件的過程的實例。在測試時,首先從二維數(shù)組中依次從每個數(shù)組的控件參數(shù)中取出控件類型和特征值,作為統(tǒng)一控件接口的輸入?yún)?shù),如果獲取控件的結果非空,則檢查所獲取到的控件的“enable”屬性,如果“enable”屬性可用,則判斷二維數(shù)組中是否存在該控件屬性及屬性值的預設值,如果存在,則將該控件的屬性及屬性值與預設值做“與”操作,根據(jù)“與”結果輸出正確或錯誤的返回值。
圖3是一個應用客戶端界面控件測試的實例。
s301為控件測試前的配置階段,創(chuàng)建配置文件,在配置文件中存儲二維 數(shù)組,ui界面上所有需要測試的控件的控件參數(shù)的預設值均存儲在二維數(shù)組中,以代表控件正常工作時的設置參數(shù)。控件參數(shù)至少包括控件類型和控件的特征值;對于需要測試屬性的控件,控件參數(shù)還可以包括控件的屬性及屬性值的預設值。
s302為接口創(chuàng)建階段,創(chuàng)建控件獲取接口和控件驗證接口。
s303為控件獲取階段??丶@取接口遍歷配置文件中每個數(shù)組,獲取每個數(shù)組中的控件類型參數(shù),封裝并通過反射機制獲得與該數(shù)組中的特征值多對應的控件。
s304為控件測試階段??丶炞C接口對控件獲取接口的輸出結果進行測試。針對某個控件,如果沒有獲取到該控件,則輸出錯誤日志;如果已獲取到該控件,則獲取該控件的“eable”屬性,如果“eable”屬性設置為不可用,則輸出錯誤日志,如果可用,則查看配置文件中該數(shù)組是否有控件的屬性及屬性值的預設值,如果有,則取出預設值與該控件的屬性及屬性值做“與”操作,如果結果為1,則返回測試結果正確值,如果不為1,則輸出錯誤日志。
與前述界面控件的獲取方法、測試方法的實施例相對應,本申請還提供了界面控件的獲取裝置、測試裝置的實施例。
本申請界面控件的獲取裝置和測試裝置的實施例均可以應用在計算機上。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在計算機的處理器將非易失性存儲器中對應的計算機程序指令讀取到內存中運行形成的。從硬件層面而言,如圖4所示,為本申請計算機的一種硬件結構圖,除了圖4所示的處理器、內存、網(wǎng)絡接口、以及非易失性存儲器之外,實施例中裝置所在的計算機通常根據(jù)該計算機的實際功能,還可以包括其他硬件,對此不再贅述。
請參考圖5,界面控件的獲取裝置500包括:
參數(shù)獲取模塊501,用于通過指定控件接口獲取至少一種目標控件的控件參數(shù);控件參數(shù)包括控件類型和特征值,所述特征值用于唯一標識目標控 件;
控件獲取模塊502,用于通過反射機制封裝所述控件類型并獲得與所述特征值所對應的目標控件。
控件參數(shù)可以預先存儲于同一集合中。該集合可以存儲于配置文件中。
控件獲取模塊502通過反射機制封裝所述控件類型并獲得與所述特征值所對應的目標控件可以包括:
將控件類型封裝并獲得控件類型所對應的方法名稱字符串;
利用反射機制獲取與控件類型對應的目標控件的方法;
調用所獲得的目標控件的方法,并傳入所述控件類型對應的特征值,獲得所述特征值所對應的目標控件。
參見圖6,界面控件的測試裝置600包括:
控件獲取接口601,用于通過指定控件接口獲取至少一種目標控件的控件參數(shù);控件參數(shù)包括控件類型和特征值,所述特征值用于唯一標識目標控件;通過反射機制封裝所述控件類型并獲得與所述特征值所對應的目標控件;
控件驗證接口602,用于對所述目標控件進行測試。
控件參數(shù)可以預先存儲于同一集合中。該集合可以存儲于配置文件中。
控件獲取接口601通過反射機制封裝所述控件類型并獲得與所述特征值所對應的目標控件包括:
將控件類型封裝并獲得控件類型所對應的方法名稱字符串;
利用反射機制獲取與控件類型對應的目標控件的方法;
調用所獲得的目標控件的方法,并傳入所述控件類型對應的特征值,獲得所述特征值所對應的目標控件。
控件驗證接口602對所述目標控件進行測試可以包括以下一項或多項:
判斷所述目標控件是否存在;
當所述目標控件存在時,判斷所述目標控件是否可用;
當所述目標控件可用時,判斷所述目標控件的屬性及屬性值設置是否正確。
控件參數(shù)還可以包括目標控件的屬性及屬性值的預設值;
控件驗證接口602根據(jù)目標控件的屬性及屬性值是否與所述預設值對應,判斷所述目標控件的屬性及屬性值設置是否正確。
上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應步驟的實現(xiàn)過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內。