一種瀏覽器渲染能力的測(cè)試方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種瀏覽器渲染能力的測(cè)試方法。
【背景技術(shù)】
[0002]現(xiàn)有瀏覽器渲染能力的測(cè)試均是通過(guò)截屏技術(shù)獲取瀏覽器圖像,例如申請(qǐng)?zhí)枮?01210213735.3,名稱為測(cè)試瀏覽器的方法和裝置的在先申請(qǐng)。但實(shí)際測(cè)試過(guò)程中,由于許多html頁(yè)面不能100%全頁(yè)顯示,因此可能會(huì)有漏項(xiàng)和缺項(xiàng)無(wú)法實(shí)現(xiàn)完整測(cè)試。
[0003]申請(qǐng)?zhí)枮?01410092857.0,名稱為一種瀏覽器測(cè)試方法與裝置的在先申請(qǐng),雖然解決了上述問題,但仍然是將所要測(cè)試的瀏覽器區(qū)域進(jìn)行截圖對(duì)比,當(dāng)有懸浮窗口或其他層疊窗口,無(wú)法按照截圖判斷出瀏覽器的渲染能力,另外,字體以及顏色的微小差別也很難被肉眼所察覺,該方式的成功率依賴于圖像的特征點(diǎn)檢測(cè)和圖形匹配算法的準(zhǔn)確率。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明的主要目的在于,提供一種瀏覽器渲染能力的測(cè)試方法,包括步驟:
[0005]A、在待測(cè)瀏覽器上對(duì)測(cè)試網(wǎng)頁(yè)進(jìn)行渲染;
[0006]B、通過(guò)窗口句柄獲取待測(cè)瀏覽器上的窗口信息;
[0007]C、將所述待測(cè)瀏覽器與基準(zhǔn)瀏覽器的窗口信息進(jìn)行對(duì)比,得出瀏覽器渲染能力測(cè)試結(jié)果。
[0008]由上,克服現(xiàn)有技術(shù)中在進(jìn)行瀏覽器渲染時(shí)采用截圖方式的缺陷,通過(guò)窗口句柄獲取待測(cè)瀏覽器上所有窗口的全部信息,在測(cè)試過(guò)程中,更加全面,準(zhǔn)確。
[0009]可選的,步驟B包括:
[0010]B1:枚舉待測(cè)瀏覽器上各個(gè)可見的頂層窗口,獲取所枚舉的各個(gè)可見的頂層窗口的信息;
[0011 ] B2:判斷是否枚舉完成,若是結(jié)束本步驟,否則返回步驟BI。
[0012]由上,通過(guò)窗口句柄獲取待測(cè)瀏覽器上所有頂層窗口的全部信息,以便在后續(xù)測(cè)試過(guò)程中,更加全面,準(zhǔn)確。
[0013]可選的,步驟B1、B2采用以下函數(shù)實(shí)現(xiàn):
[0014]:: Enumffindows (reinterpret_cast EnumffindowsProc ,NULL),其中,函數(shù)EnumWindows用于枚舉待測(cè)瀏覽器上所有可見的頂層窗口,將窗口句柄傳送給回調(diào)函數(shù),回調(diào)函數(shù)返回FALSE將停止枚舉,否則EnumWindows函數(shù)繼續(xù)枚舉頂層窗口;函數(shù)EnumWindowsProc為回調(diào)函數(shù)。
[0015]可選的,步驟B2后還包括:
[0016]B3:針對(duì)已枚舉出的所述頂層窗口,將各個(gè)頂層窗口作為父窗口,枚舉各個(gè)父窗口的所有子窗口 ;
[0017]B4:判斷是否枚舉完成,若是結(jié)束本步驟,否則返回步驟B3。
[0018]由上,當(dāng)一個(gè)頂層窗口作為父窗口,且包含若干子窗口時(shí),同樣可以獲取到其所有子窗口的信息,從而進(jìn)行渲染測(cè)試,使得測(cè)試結(jié)果更加全面。
[0019]可選的,步驟B3、B4采用以下函數(shù)實(shí)現(xiàn):
[0020]EnumChildffindows(HffND hffndParent,WNDENUMPROC IpEnu mFunc,LPARAMIParam),其中,函數(shù)EnumChi IdWindows用于依次枚舉當(dāng)前父窗口的所有子窗口,將窗口句柄傳送給回調(diào)函數(shù),回調(diào)函數(shù)返回FALSE將停止枚舉,否則EnumWindows函數(shù)繼續(xù)枚舉,直到各個(gè)父窗口的所有子窗口掃描完為止;函數(shù)IpEnumFunc為回調(diào)函數(shù),表示為BOOL CALLBACKEnumChiIdProc(HffND hwndChiId,LPARAM IParam)。
[0021 ] 可選的,步驟B還包括:
[0022]B5:確定用戶通過(guò)鼠標(biāo)選擇的窗口,以獲取該窗口信息的步驟。
[0023]由上,針對(duì)有可能會(huì)出現(xiàn)用戶僅希望對(duì)于瀏覽器的某些窗口進(jìn)行渲染測(cè)試,或者由于某些針對(duì)嵌入式小窗口等特殊情況而無(wú)法掃描獲取的窗口進(jìn)行測(cè)試時(shí),可以采用通過(guò)鼠標(biāo)點(diǎn)選的方式獲得某些特定窗口的信息。
[0024]可選的,步驟B5米用以下函數(shù)實(shí)現(xiàn):HffND WindowFromPoint (POINT Point),該函數(shù)用于獲得包含指定點(diǎn)的窗口的句柄;typedef struct tagP0INT{L0NG x;LONG y;},該函數(shù)用于獲取到指定點(diǎn)所在窗口的信息。
[0025]可選的,步驟C包括:將所述待測(cè)瀏覽器與基準(zhǔn)瀏覽器的窗口信息轉(zhuǎn)換為二進(jìn)制數(shù)據(jù);
[0026]比較所述二進(jìn)制數(shù)據(jù),依據(jù)比較結(jié)果得出瀏覽器渲染能力測(cè)試結(jié)果。
【附圖說(shuō)明】
[0027]圖1為本發(fā)明流程圖。
【具體實(shí)施方式】
[0028]為克服現(xiàn)有技術(shù)存在的缺陷,本發(fā)明提供一種瀏覽器渲染能力的測(cè)試方法,在待測(cè)瀏覽器上對(duì)測(cè)試網(wǎng)頁(yè)進(jìn)行加載和渲染,而后通過(guò)操作系統(tǒng)窗口 API而非截圖技術(shù)獲取當(dāng)前瀏覽器活動(dòng)窗口句柄,進(jìn)而取得內(nèi)存中的位圖信息;將取得的信息保存為二進(jìn)制數(shù)據(jù)與基準(zhǔn)網(wǎng)頁(yè)數(shù)據(jù)進(jìn)行對(duì)比;通過(guò)比對(duì)結(jié)果得出待測(cè)試瀏覽器的錯(cuò)誤輸出和渲染能力。
[0029]如圖1所示,本發(fā)明所述瀏覽器渲染能力的測(cè)試方法包括以下步驟:
[0030]S10:在待測(cè)瀏覽器上對(duì)測(cè)試網(wǎng)頁(yè)進(jìn)行渲染。
[0031 ] S20:獲取待測(cè)瀏覽器上所有窗口信息。
[0032]枚舉瀏覽器上所有可見的頂層窗口,并從最底層收集并匯總所有可見頂層窗口渲染后的信息。
[0033]具體的,米用組合運(yùn)用EnumWindows、EnumWindowsProc、EnumChiIdWindows與EnumChi IdProc四組函數(shù)句柄實(shí)現(xiàn)上述功能。
[0034]首先,調(diào)用EnumWindows函數(shù),具體函數(shù)語(yǔ)句為:::EnumWindows(reinterpret—cast EnumWindowsProc,NULL)。其功能表示為:傳入回調(diào)函數(shù)作為第一個(gè)參數(shù),并將第一個(gè)參數(shù)轉(zhuǎn)換成WNDENUMPROC類型,當(dāng)回調(diào)參數(shù)返回FALSE時(shí),EnumWindows工作結(jié)束,第二個(gè)參數(shù)設(shè)為NULL ο回調(diào)參數(shù)為EnumWindowsProc函數(shù)。
[0035]EnumWindows函數(shù)用于自桌面窗口開始(它是所有窗口的祖先),依次掃描,以枚舉所有屏幕上的頂層窗口信息,并將窗口句柄傳送給回調(diào)函數(shù)。該回調(diào)函數(shù)即為EnumWindowsProc函數(shù),只有當(dāng)回調(diào)函數(shù)返回FALSE時(shí),EnumWindows函數(shù)停止掃描,否則EnumWindows函數(shù)繼續(xù)掃描,直到所有頂層窗口掃描完為止。
[0036]其次,針對(duì)已枚舉出的所有屏幕上的頂層窗口,將各個(gè)頂層窗口作為父窗口,枚舉各個(gè)父窗口的所有子窗口。
[0037]調(diào)用EnumCh ildWindows 函數(shù),具體函數(shù)語(yǔ)句為:EnumCh ildWindows( HffNDhffndPar