新四季網

一種瀏覽器兼容性檢測方法和系統的製作方法

2023-05-29 23:15:31

一種瀏覽器兼容性檢測方法和系統的製作方法
【專利摘要】本發明公開了一種瀏覽器兼容性檢測方法和系統,其中瀏覽器兼容性檢測方法包括以下步驟:S1:提供待檢測的原始碼文件及自定義配置文件;S2:根據所述自定義配置文件的內容,對所述待檢測的原始碼文件和檢測規則文件進行預處理,標記不進行檢測的原始碼文件和不檢測的規則文件;S3:根據預處理後的結果,將需要檢測的原始碼文件中的原始碼與規則庫中需要檢測的全部規則文件中的檢測規則進行一一比對,找出兼容性問題並保存檢測結果;S4:讀取檢測結果及針對檢測到兼容性問題的預先處理方案,生成報表。本發明運用靜態分析技術在不運行程序的基礎上,對原始碼的詞法、語法,根據自定義規則進行規則檢測,提高了檢測效率,且安全性更高。
【專利說明】一種瀏覽器兼容性檢測方法和系統

【技術領域】
[0001] 本發明涉及網絡【技術領域】,尤其涉及一種用於對網頁或程序在多瀏覽器間運行所 產生的兼容性問題進行檢測的方法及裝置。

【背景技術】
[0002] 隨著近年來敏捷開發模式在網際網路、軟體行業的廣泛應用,負責保證開發質量的 測試工作也面臨巨大的挑戰。測試周期短、測試版本多,開發與測試的人力配比越來越高, 敏捷測試也成為軟體測試的趨勢。現有的純手工測試速度慢、效率低,且在大型系統開發後 期,需要回歸測試的點越多,測試工作的重複性就越高,想要維持同樣的迭代速度,依靠純 手工測試已不現實。在這種情況下,設計和使用自動化或半自動化的測試方法及測試工具 是目前軟體測試發展的當務之急。
[0003] 目前由於各種主流瀏覽器的解析引擎及環境不同等原因,導致同一套代碼,通過 不同的瀏覽器解析後展示的頁面效果不一樣,有的會出現布局錯亂、圖片錯位等現象,不僅 僅影響頁面美觀,更有可能導致頁面不可用,造成直接的經濟損失。針對上述問題,現有互 聯網公司對於瀏覽器兼容性問題的檢測大多停留在手工階段,人力成本高、效率低。而現有 的瀏覽器兼容性檢測工具主要分為兩大類:一種是截圖類,將頁面在多個瀏覽器中的打開 結果截圖返回給用戶;一種是檢測代碼中使用的標籤、屬性是否在瀏覽器中得到支持並發 現兼容性問題。第一種檢測工具測試時需要大量的人工參與比對每個瀏覽器截圖結果,而 第二種檢測工具則需要將產品發布到線上或者開發、測試機器能夠訪問外網才能夠檢測, 但是檢測後不能快速定位問題並不能給出相應解決方法。鑑於安全性、效率及成本等問題 的考慮,上述的兩種檢測工具均已不能適應敏捷測試的需求。


【發明內容】

[0004] 本發明的目的是提供一種具有較高檢測效率且安全性更高的瀏覽器兼容性檢測 方法和系統。
[0005] 為了滿足上述目的,本發明公開了一種瀏覽器兼容性檢測方法,其特徵在於包括 以下步驟: 51 :提供待檢測的原始碼文件及自定義配置文件; 52 :根據所述自定義配置文件的內容,對所述待檢測的原始碼文件和檢測規則文件進 行預處理,標記不進行檢測的原始碼文件和不檢測的規則文件; 53 :根據預處理後的結果,將需要檢測的原始碼文件中的原始碼與規則庫中需要檢測 的全部規則文件中的檢測規則進行一一比對,找出兼容性問題並保存檢測結果; 54 :讀取檢測結果及針對檢測到兼容性問題的預先處理方案,生成報表。
[0006] 所述步驟S2中根據所述自定義配置文件的內容,對所述待檢測的原始碼文件和 檢測規則文件進行預處理的步驟具體包括以下步驟: S21 :遍歷待檢測的原始碼文件並判斷原始碼文件大小,若原始碼文件為空,則標記為 不進行檢測的原始碼文件;將待檢測的原始碼文件與所述自定義配置文件中的自定義源代 碼檢測目錄進行比對,標記不進行檢測的原始碼文件; S22 :遍歷規則庫中的檢測規則文件,將所述檢測規則文件與所述自定義配置文件中的 自定義所需檢測規則進行比對,標記不進行檢測的規則文件。
[0007] 所述步驟S3具體為:採用深度優先算法遍歷預處理後的需要檢測的原始碼文件 中的文件夾直至遍歷到文件夾的最底層,將最底層文件夾中的原始碼與規則庫中需要檢測 的全部規則文件中的檢測規則進行一一比對直至檢測完畢後返回上一層,檢測其他未被檢 測的原始碼文件夾,直到全部檢測完畢,找出兼容性問題並保存檢測結果。
[0008] 步驟S3中將最底層文件夾中的原始碼與規則庫中需要檢測的全部規則文件中的 檢測規則進行一一比對的步驟進一步為:採用循環嵌套的方式調度規則庫中需要檢測的全 部規則文件中的檢測規則,將最底層文件夾中的原始碼與調度的檢測規則進行一一比對。
[0009] 所述步驟S1中的自定義配置文件包括自定義原始碼檢測目錄、自定義所需檢測 規則、以及規則等級;所述步驟S2中的規則文件為將每個檢測規則設置成獨立的可直接進 行檢測的文件;所述步驟S3中的規則庫包括預先整理提供的瀏覽器兼容性問題描述、造成 的影響及解決方法的規則組合。
[0010] 所述步驟S3中規則庫中瀏覽器兼容性問題描述、造成的影響及解決方法的預先 整理提供的步驟具體包括: 501 :定義URL地址、文件保存路徑,判斷是否存在信息保存文件夾,若存在,則將現有 文件備份,創建保存最終信息文件夾以及中間信息文件夾; 502 :清理提取網頁產生的中間文件; 503 :下載入口網頁,提取所述入口網頁中的兼容性問題編號,拼接下級URL地址; 504 :根據拼接的下級URL地址,下載所有具有兼容性問題網頁; 505 :運用正則表達式,處理下載到本地的具有兼容性問題的網頁,提出問題描述、造成 的影響以及解決方法。
[0011] 本發明還公開了一種瀏覽器兼容性檢測系統,其特徵在於包括: 用戶交互模塊,用於提供待檢測的原始碼文件及自定義配置文件; 規則調度模塊,用於根據所述自定義配置文件的內容,對所述待檢測的原始碼文件和 檢測規則文件進行預處理,標記不進行檢測的原始碼文件和不檢測的規則文件; 規則檢測模塊,用於根據預處理後的結果,將需要檢測的原始碼文件中的原始碼與規 則庫中需要檢測的全部規則文件中的檢測規則進行一一比對,找出兼容性問題並保存檢測 結果; 生成報表模塊,用於讀取檢測結果及針對檢測到兼容性問題的預先處理方案,生成報 表。
[0012] 與現有技術相比較,本發明通過運用靜態分析技術在不運行程序的基礎上,對源 代碼的詞法、語法,根據自定義規則進行規則檢測,並對檢測出的兼容性問題提供檢測方 法。本發明提高了檢測效率且具備較高的安全性。

【專利附圖】

【附圖說明】
[0013] 圖1為本發明瀏覽器兼容性檢測方法的流程圖; 圖2為本發明瀏覽器兼容性檢測系統的原理方框圖。

【具體實施方式】
[0014] 下面將結合附圖和【具體實施方式】對本發明做進一步說明。
[0015] 如圖2所示,本發明瀏覽器兼容性檢測系統包括:用戶交互模塊、規則調度模塊、 規則檢測模塊以及生成報表模塊。
[0016] 用戶交互模塊,用於提供待檢測的原始碼文件及自定義配置文件。在開始檢測之 前,用戶必須通過用戶交互模塊提供待檢測的原始碼文件。待檢測的原始碼文件可以上網 獲取,也可以是本地的網頁文件。所提供的待檢測的原始碼文件可以採用svn形式或者 http形式,也可以是直接在原始碼目錄執行啟動命令行模式的檢測命令。所述自定義配 置文件進一步包括:自定義原始碼檢測目錄、自定義所需檢測規則、自定義規則級別、採用 diff增量模式檢測原始碼、發送郵件等內容供用戶選擇使用。所述自定義所需檢測規則比 如CSS代碼中全形空格的處理方式,"marginwidth〃屬性錯誤處理方式等。針對自定義規 則級別,用戶可以根據自身需求自定義,比如對於CSS代碼中全形空格錯誤定義級別較高, 對於"marginwidth〃屬性錯誤定義級別較低。所述diff增量模式是指採用svn形式管理 原始碼,運用svn管理軟體,僅僅下載代碼有更改的部分作為原始碼文件並只檢測與上次 檢測存在變動的增量代碼,以便能夠大大縮短檢測時間,提高檢測效率。通過自定義配置文 件中的內容選項,用戶可以自定義檢測哪些原始碼文件、規定所需檢測的規則、確定規則的 級別、檢測模式及檢測結果的通知方式等。
[0017] 用戶交互模塊的實現方式主要通過Web形式界面和命令行模式。Web形式界面 的提交功能以直觀的可視化方式確定必要的輸入,主要負責接收用戶上傳的自定義配置文 件,並將上傳的自定義配置文件長久保存到特定文件夾便於後續使用,並且將自定義配置 文件按照時間命名後保存到歷史文件夾便於後續查看。命令行模式更加簡單、方便且更加 適用於自動化開發及測試。主要接收用戶或者前端傳遞的命令行參數,對參數的合理性進 行判斷,並處理簡單的用戶交互請求。用戶輸入命令行參數後用用戶輸入的信息替換默認 配置文件並生成新配置文件。當用戶輸入不識別的命令行參數時,則提示出錯,並出現幫助 信息,提示可供接收的命令行參數,並給出正確的使用樣例。
[0018] 當採用Web形式界面時,Web形式界面的功能共分為五個方面: 1) 提供提示信息良好的交互界面供用戶輸入原始碼地址、選擇是否以增量的方式進行 檢測、是否需要發送報表郵件、提供上傳下載自定義配置文件功能; 2) 提供檢測觸發功能; 3) 開始檢測後,實時將檢測進度展現給用戶; 4) 檢測結束後以報表形式展示檢測結果。
[0019] 規則調度模塊,用於根據所述自定義配置文件的內容,對所述待檢測的原始碼文 件和檢測規則文件進行預處理,標記不進行檢測的原始碼文件和不檢測的規則文件。規則 調度模塊首先下載原始碼文件,然後根據所述自定義配置文件的內容,對所述待檢測的源 代碼文件和檢測規則文件進行預處理。對所述待檢測的原始碼文件和檢測規則文件進行預 處理具體包括:遍歷待檢測的原始碼文件並判斷原始碼文件大小,若原始碼文件為空,則標 記為不進行檢測的原始碼文件;將待檢測的原始碼文件與所述自定義配置文件中的自定義 原始碼檢測目錄進行比對,標記不進行檢測的原始碼文件;遍歷規則庫中的檢測規則文件, 將所述檢測規則文件與所述自定義配置文件中的自定義所需檢測規則進行比對,標記不進 行檢測的規則文件。
[0020] 所述規則調度模塊中還設置有規則庫,該規則庫包括預先整理提供的瀏覽器兼容 性問題描述、造成的影響及解決方法的規則組合。規則的設計與實現是瀏覽器兼容性檢測 最核心的部分。對規則的設計首先要清楚瀏覽器兼容性問題出現的原因,從而針對原因提 出相應的解決方法。根據網頁標準及瀏覽器內核的獨特性對瀏覽器兼容性問題進行分類: ①對W3C等標準支持不足與特定元件引起兼容性問題 對於由標準支持不足產生的兼容性問題很多,例如IE6 IE7 IE8(Q)中浮動元素寬度 的shrink-to-fit算法與標準規定的算法不同,導致在IE6 IE7 IE8(Q)中,如果一個浮 動元素的寬度是shrink-to-fit,該元素的最終寬度可能比預期的小,並被儘可能的向上布 局。
[0021] ②瀏覽器的內核編碼問題引起兼容性問題 瀏覽器內核作為瀏覽器中最重要的原件,也不可避免的會出現由於自身編碼導致的各 種問題。這些瀏覽器內核的編碼問題最終會造成使用不同瀏覽器內核渲染的結果不同。並 且,當開發瀏覽器內核的組織意識到這些問題,發布新版本來更改時,用戶未必會選擇使用 新版本的瀏覽器,由CNZZ統計的瀏覽器版本即可得知,大批用戶確實在老版本的瀏覽器, 由其是使用Windows XP系統的用戶,大量在使用XP自帶的IE6。因此,老版本的內核bug 雖然已在新發布的版本中得到修正,但是新的版本沒有被用戶所採用,並且新發布的瀏覽 器內核依然無法避免不出現問題,這也是造成瀏覽器兼容性問題層出不窮的重要原因。
[0022] ③對用戶使用錯誤的處理方式不同引起兼容性問題。
[0023] 對於標準沒有明確規定的錯誤,儘管各大瀏覽器內核都在試圖嘗試使用與其他內 核類似的方式進行處理,但總是無法避免開發者對於各種標籤、屬性的隨意使用,造成各種 沒有被標準規定的異常行為,對於這些異常行為,瀏覽器內核具有自動容錯功能,能夠修復 異常的內容,並使異常代碼繼續工作。但這並不是HTML最新規範的內容,而是瀏覽器長期 發展的結果。對於異常的處理,不可避免的出現各內核處理不一致的現象,這也是造成瀏覽 器兼容性的一大原因。
[0024] 針對上述的兼容性問題,規則庫中預先設置了針對這些常見的兼容性問題的檢測 規則及針對兼容性問題所採用的解決方案,以便在檢測出兼容性問題時能夠為用戶提供相 應的解決方法。
[0025] 所述規則調度模塊對待檢測的原始碼文件和檢測規則文件進行預處理後,即會準 備針對兼容性問題的解決方法。主要採用傳統爬蟲技術與正則表達式技術匹配解決方法。 規則庫中瀏覽器兼容性問題描述、造成的影響及解決方法的準備步驟具體包括: 501 :定義URL地址、文件保存路徑,判斷是否存在信息保存文件夾,若存在,則將現有 文件備份,創建保存最終信息文件夾以及中間信息文件夾; 502 :清理提取網頁產生的中間文件; 503 :下載入口網頁,提取所述入口網頁中的兼容性問題編號,拼接下級URL地址; 504 :根據拼接的下級URL地址,下載所有具有兼容性問題網頁; S05:運用正則表達式,處理下載到本地的具有兼容性問題的網頁,提出問題描述、造成 的影響以及解決方法。
[0026] 規則庫中瀏覽器兼容性問題描述、造成的影響及解決方法的準備步驟不需要每次 執行,在部署瀏覽器兼容性檢測系統時,以及系統更新時執行一次即可。規則調度模塊對源 代碼文件及檢測規則文件預處理完成後則進入規則檢測模塊對原始碼進行檢測。
[0027] 規則檢測模塊,用於根據預處理後的結果,將需要檢測的原始碼文件中的原始碼 與規則庫中需要檢測的全部規則文件中的檢測規則進行一一比對,找出兼容性問題並保存 檢測結果。
[0028] 規則檢測模塊主要是對原始碼進行檢測。具體就是採用深度優先算法遍歷預處理 後的需要檢測的原始碼文件中的文件夾直至遍歷到文件夾的最底層,採用循環嵌套的方式 調度規則庫中需要檢測的全部規則文件中的檢測規則,將最底層文件夾中的原始碼與調度 的檢測規則進行一一比對。檢測完畢後返回上一層原始碼文件夾,檢測其他未被檢測的源 代碼文件夾,直到全部檢測完畢,找出兼容性問題並保存檢測結果。
[0029] 兼容性檢測執行的主要工作步驟分為以下三個方面: 1) 對預處理後的需要檢測的原始碼文件的大小進行判斷,若文件為空,則不進行檢 測; 2) 若原始碼文件不為空,採用深度優先算法遍歷原始碼文件直至遍歷到文件夾的最底 層,採用循環嵌套的方式調度規則庫中需要檢測的全部規則文件中的檢測規則,將最低層 文件與調度的檢測規則一一比對直至過濾完所有的待檢測規則。檢測完畢後返回上一層源 代碼文件夾,同樣採用上述的循環嵌套的方式調度檢測規則直至上一層原始碼文件夾過濾 所有的檢測規則,最終將所有的原始碼文件檢測完畢。若遇到兼容性問題,則保存文件名 稱、檢測規則、出錯的行、出錯的代碼、兼容性問題級別到特定的檢測結果文件。
[0030] 3)對檢測結果文件進行格式判斷,將格式正確的檢測結果文件傳遞給生成報表模 塊。
[0031] 採用深度優先算法遍歷原始碼文件可以將同一個原始碼文件夾中的文件保存記 錄在一起,適合用戶對檢測結果的查看。用戶體驗也會更好且原始碼會更簡潔易懂,大大提 高了系統的方便性及易讀性。
[0032] 原始碼與規則比對檢測的過程中,Web形式界面前端實時的通過Ajax技術獲取檢 測信息,並將檢測結果列印到Web形式界面中。最終規則檢測模塊將處理結果傳遞給生成 報表模塊,生成用戶可識別的報表。
[0033] 生成報表模塊,用於讀取檢測結果及針對檢測到兼容性問題的預先處理方案,生 成報表。
[0034] 報表展示部分作為瀏覽器兼容性檢測結果的輸出部分,決定著檢測系統是否易於 使用,是否便於用戶定位問題,是否能夠提供解決方法來解決問題,甚至直接決定了檢測系 統能否被用戶接受,是否易於推廣。生成報表模塊的主要功能是將讀取到的檢測結果以及 預先處理方案根據模板生成獨立的報表成分,再對獨立的報表成分進行組合,最後將生成 的報表發送給郵件接收人。
[0035] 生成報表模塊的工作流程分為以下四個部分: 1) 判斷檢測結果是否為空,若為空,則不生成報表; 2) 若檢測結果不為空,則根據自定義配置文件中定義的規則等級,按照規則編號,對檢 測結果的規則等級進行修改; 3) 對檢測結果進行總結,統計各個規則等級對應的問題總數及出現問題的概率; 4) 讀取檢測結果,按照檢測結果的文件名填充報表模板,並讀取預先處理方案,填充報 表模板。
[0036] 運用預設的報表模板文件,通過對於檢測結果的分析、配置文件的讀取、規則級別 的修改、規則數目的統計,生成易於用戶查看、定位兼容性問題的報表。
[0037] 如圖1所示,本發明瀏覽器兼容性問題的檢測方法,包括以下步驟: S1 :提供待檢測的原始碼文件及自定義配置文件。所述自定義配置文件包括自定義源 代碼檢測目錄、自定義所需檢測規則、以及規則等級。例如:規則庫中A類別的規則有10條, B類別的規則由7條,對於用戶提交的自定義配置文件,如果自定義配置文件中定義A類規 則不需要檢測,那麼待檢測原始碼文件就只需要檢測B類的7條規則就可以了;如果自定義 配置文件中沒有定義需要忽略的規則,那麼對於A、B類17條規則,待測原始碼文件都要檢 測。
[0038] S2:根據所述自定義配置文件的內容,對所述待檢測的原始碼文件和檢測規則文 件進行預處理,標記不進行檢測的原始碼文件和不檢測的規則文件。
[0039] 所述步驟S2中根據所述自定義配置文件的內容,對所述待檢測的原始碼文件和 檢測規則文件進行預處理的步驟具體包括以下步驟: 521 :遍歷待檢測的原始碼文件並判斷原始碼文件大小,若原始碼文件為空,則標記為 不進行檢測的原始碼文件;將待檢測的原始碼文件與所述自定義配置文件中的自定義源代 碼檢測目錄進行比對,標記不進行檢測的原始碼文件; 522 :遍歷規則庫中的檢測規則文件,將所述檢測規則文件與所述自定義配置文件中的 自定義所需檢測規則進行比對,標記不進行檢測的規則文件。
[0040] 上述的規則文件為將每個檢測規則設置成獨立的可直接進行檢測的文件 S3 :根據預處理後的結果,將需要檢測的原始碼文件中的原始碼與規則庫中需要檢測 的全部規則文件中的檢測規則進行一一比對,找出兼容性問題並保存檢測結果。具體為:採 用深度優先算法遍歷預處理後的需要檢測的原始碼文件中的文件夾直至遍歷到文件夾的 最底層,採用循環嵌套的方式調度規則庫中需要檢測的全部規則文件中的檢測規則,將最 底層文件夾中的原始碼與調度的檢測規則進行一一比對直至檢測完畢後返回上一層,檢測 其他未被檢測的原始碼文件夾,直到全部檢測完畢,找出兼容性問題並保存檢測結果。
[0041] 採用深度優先算法遍歷預處理後的需要檢測的原始碼文件的偽代碼如下: #getfile S參數依次為文件路徑,需檢測的文件後綴,忽略的文件,忽略的文件夾,最大 遍歷深度 getfiles (path, allowext, fileomit , diromit , maxdepth = cunt) #如果為文件形式if path is file #檢查文件後綴為需檢測的文件 check if file has allowext #檢查文件不是忽略檢測的文件 check file not fileomit #將文件路徑保存到files中 files, append (path) #若路徑為文件夾,且當前遞歸深度不小於ο elif path is dir and maxdepth > 0 #檢查文件夾不是忽略檢測的文件夾 check dir not diromit #當遍歷完此目錄下的所有文件後,遍歷同級目錄下的其他文件 for next_path in os.listdir(path): #遞歸遍歷此目錄下的所有文件 files += getfiles (next-path, allowext, fileomit, diromit, maxdepth _ 1) return files 規則庫包括預先整理提供的瀏覽器兼容性問題描述、造成的影響及解決方法的規則組 合。規則庫中瀏覽器兼容性問題描述、造成的影響及解決方法的預先整理提供的步驟具體 包括: 501 :定義URL地址、文件保存路徑,判斷是否存在信息保存文件夾,若存在,則將現有 文件備份,創建保存最終信息文件夾以及中間信息文件夾; 502 :清理提取網頁產生的中間文件; 503 :下載入口網頁,提取所述入口網頁中的兼容性問題編號,拼接下級URL地址; 504 :根據拼接的下級URL地址,下載所有具有兼容性問題網頁; 505 :運用正則表達式,處理下載到本地的具有兼容性問題的網頁,提出問題描述、造成 的影響以及解決方法。
[0042] 步驟S05中正則表達式為,在關鍵信息保存在與標籤後,由來標不,以 和 結束的源文 件中,正則表達式如下: #按行讀取id . wd中分行保存的id號 while read line do #執行正則表達式,提取id為description、influence、solutions標籤後跟隨的內容 cat$Path/${line} · HTML||grep-Po"〈h2\sid=\"description\">.*〈h2|\ sid=\"influence\">.氺.氺/〈/hl>\n/g' |sed's/〈/p>/〈p>\n/g' |sed's/〈[~>]*>//g' |sed's八s// g' Ised's/'>$txtPath/${line}. txt done<id. wd 上述正則表達式,首先讀取下載到以id號命名的HTML文件;其次為了便於按 行處理的grep命令對整個文件同時進行處理,通過tr〃\n〃 〃〃命令將源碼中的換 行符替換為空格,即將整個源文件處理為一行內容;之後運用grep命令,提取.*〈h2 間的所有內容;再運用 sed,s/〈/h[0-6]>/〈/hl>\n/g' 命 令,將tr後合成一行的文件在後進行換行,方便用戶查看;後通過sed ' s/〈Γ>]*>// g'去除〈> 標籤以及標籤內的所有內容,如〈> 通過Γ>]確保只匹配非〉值,即確保匹配到 的〉符號為跟在〈後的第一個〉,將、〈h2>等標籤刪除,只留下可讀的文字;最終將文 件保存在以ID命名的txt文件中。
[0043] S4 :讀取檢測結果及針對檢測到兼容性問題的預先處理方案,生成報表。
[0044] 應用實施例一: 各瀏覽器對"marginwidth〃和〃marginheight"屬性值被設定為小於零或其他非法 值時,各瀏覽器對其處理不同。此瀏覽器兼容性問題的產生為歸納的第三類"對用戶使用 錯誤的處理方式不同"中的一個典型實例。此兼容性錯誤為對於〈frame〉和〈iframe〉標 籤適用的"marginheigh〃和"marginwidth〃屬性各瀏覽器對於此屬性使用錯誤的處理不 一致。其中marginheight屬性是用來指定框架的內容區域與框架內邊框之間的上下空 白距離大小的;而marginwidth屬性被用來指定左右空白距離大小,都是較為常用的屬 性。當 marginheight、marginwidth 值設置為負數時,在 IE6、IE7、IE8、Firefox Opera 瀏覽器中,運行結果是0,這說明這些瀏覽器將這兩個屬性的錯誤值修復為0 ;而Chrome、 Safari瀏覽器中,瀏覽器忽略了存在錯誤值的屬性,瀏覽器使用默認'margin'值來顯示 頁面。在 IE6、IE7、IE8、Firefox 中,〃marginwidth〃和〃marginheight〃值設置為非數 值時,瀏覽器使用默認'margin'值來顯示頁面;Chrome Safari中,瀏覽器將其錯誤值 設置〇,並將瀏覽器默認'margin'值覆蓋。Opera中,將非數值賦值錯誤修復為設置值 5px ,也將瀏覽器默認'margin'值覆蓋。上述分析可知,各瀏覽器對〃 marginwidth 〃和 "marginheight 〃的錯誤設定值的處理不同,會導致較大渲染差異。此兼容性問題通過以下 步驟進行檢測: 第一.找到名稱為〈frame〉或者〈iframe〉的標籤; 第二.在標籤內查找〃marginwidth 〃或〃marginheight 〃屬性; 第三,對屬性值與規則進行比對判斷,若屬性值小於〇,或者不是數字形式,則視為出現 兼各性錯誤,屏.列印錯誤,並保存。
[0045] 為了便於在Python中解析HTML,採用了標準庫HTMLParser庫來解析HTML文檔, HTMLParser庫的一大優勢是,可以調用HTMLParser庫類,將HTML文檔根據Tag解析成為獨 立的片段,並根據Tag類型來調用該類中相應的函數來處理這些片段。〃marginwidth〃和 "marginheight〃的錯誤值檢測步驟中的第一步,查找名稱為〈frame〉或者〈iframe〉的標 籤,即是通過HTMLParser的star tag函數來實現的。代碼如下所示 #找到名稱為〈iframe〉的標籤 def start」frame (self, attr) 當找到〈frame〉或者〈iframe〉標籤後,後續的在標籤內查找〃marginwidth〃或 "marginheight〃屬性通過字符串匹配的方式實現,將文件讀取的每行,利用for循環,逐個 檢測識別到的單詞是否與〃marginwidth 〃或〃marginheight 〃一致。代碼如下所示: #查找〃marginwidth〃或〃marginheight〃屬性,並記錄屬性位置 for item in attr: if (item [0]. lower == ''marginwidth")or (item [0]. lower == ''marginheight"): 上述代碼為了避免大小寫匹配問題,採用了 lower函數,將單詞轉化為小寫形式, 並為了獲取匹配到的〃marginwidth〃或〃marginheight〃值,記錄了〃marginwidth" 或〃marginheight〃屬性的位置。在匹配到〈iframe〉標籤中存在〃marginwidth〃或 "marginheight 〃屬性後,定位到的〃marginwidth 〃或〃marginheight 〃位置,讀取了下一 個欄位,即〃marginwidth〃或〃marginheight〃屬性值。根據屬性值,判斷是否小於0並通 過isdigit 函數判斷欄位是否為數字,當確定〃marginwidth〃或〃marginheight〃屬性值 小於〇或者不為數字後,記錄出現的錯誤到RES中,其中按順序保存了 5種信息,即兼容性 規則編號、原始碼文件名稱、出現問題的行數、出現問題的代碼行、以及此兼容性問題的等 級。具體代碼如下所示: #讀取下一個欄位 charset = item[l]. lower print charset, LINENO, LINE_RAff #判斷是否小於〇,判斷欄位是否為數字 if ((charset < ' 0') or (charset, isdigit ) !=1): #記錄出現的錯誤,到RES中 RES. append ([' HM1002', filename, LINENO, LINE_RAff, ' error']) 通過上述三段代碼,能夠檢測出〈frameXiframe〉標籤裡marginheight、marginwidth 的非法值。為了使此檢測規則成為獨立的,可以插拔形式的執行文件,還需要在執行此代碼 檢測函數前,判斷輸入的參數是否為2個,並且判斷通過輸入的原始碼文件路徑能夠否獲 取到文件。對於此類詞法檢測規則,需要在執行代碼前逐行讀取被檢測原始碼的每一行並 將其傳給代碼檢測部分執行檢測;為了在後續報表中展示出文件的行數,需要記錄問題代 碼的行數。文件的讀取、代碼行的記錄、與檢測函數執行的代碼如下所示: #讀取文件 f=file (filename,' r ) #把文件每一行作為一個list的一個成員,並返回這個list all_lines = f. readlines mp = HM1002 #按行執行規則的檢測 for In in all_lines: #在LINE_RAW中記錄此行內容 LINE_RAff = In mp. feed(In) #在LINENO中記錄行號 LINENO = LINENO + 1 上述規則實現部分的代碼所示,將其串連起來即可完整的實現一個可插拔的檢測規 貝1J。最終待所有的待測文件都檢測完畢後,將檢測結果傳遞給生成報表模塊,供生成報表使 用。
[0046]我們針對上述的瀏覽器兼容性問題通過代碼具體說明執行過程: (1)需要檢測的網頁代碼為: <frameset rows=^?5'^ 50%, 25%^y 〈frame sr c = ^/ e xamp 1 e /h tml/frame_a. h tml ^ m a r g i n w i d t h = ^ mar ginheight=^20px 〈frame src= ^/example/h tml/frame_b. h tml 〈frame src= ^/example/h tml/frame_c. h tml (2) 針對上述原始碼檢測設置的檢測規則為: a) 對於〈frame〉和〈iframe〉標籤的 "marginheigh" 和 "marginwidth" 屬性被設定為 小於零或其他非法值時,各瀏覽器對其處理不同。規則代碼如下: #找到名稱為〈iframe〉的標籤 def start」frame (self, attr) #查找〃marginwidth〃或〃marginheight〃屬性,並記錄屬性位置 for item in attr: if(item[0]· lower ==〃marginwidth〃)or (item[0]. lower == ''marginheight"): #讀取下一個欄位 charset = item[l]. lower print charset, LINENO, LINE_RAff #判斷是否小於〇,判斷欄位是否為數字 if ((charset < ' 0') or (charset, isdigit ) !=1): #記錄出現的錯誤,到RES中 RES. append ([' HM1002', filename, LINENO, LINE_RAff, ' error']) b) CSS代碼中對全形空格的處理方式各瀏覽器不一樣,規則代碼如下: #開始是否存在全形空格的判斷 def check_IdeographicSpace (self, str) #判斷欄位中是否存在全形空格 if str. find (u'\u0030') or str. find (u'\u2003'): print str, LINENO, LINE_RAff #記錄出現的錯誤,到RES中 RES. append ([' RN8004', filename, LINENO, LINE_RAff, ' error']) (3) 檢測原始碼腳本文件 #讀取文件 f=file (filename,' r ) #把文件每一行作為一個list的一個成員,並返回這個list all_lines = f. readlines mp = HM1002 #按行執行規則的檢測 for In in all_lines: #在LINE_RAW中記錄此行內容 LINE_RAff = In mp. feed(In) #在LINENO中記錄行號 LINENO = LINENO + 1 (4) 檢測結果 檢測出的問題是:〈frame〉和〈iframe〉標籤的"marginheigh"和"marginwidth"屬性 被設定為小於零或其他非法值 生成的報表為:

【權利要求】
1. 一種瀏覽器兼容性檢測方法,其特徵在於包括以下步驟: 51 :提供待檢測的原始碼文件及自定義配置文件; 52 :根據所述自定義配置文件的內容,對所述待檢測的原始碼文件和檢測規則文件進 行預處理,標記不進行檢測的原始碼文件和不檢測的規則文件; 53 :根據預處理後的結果,將需要檢測的原始碼文件中的原始碼與規則庫中需要檢測 的全部規則文件中的檢測規則進行一一比對,找出兼容性問題並保存檢測結果; 54 :讀取檢測結果及針對檢測到兼容性問題的預先處理方案,生成報表。
2. 如權利要求1所述的瀏覽器兼容性檢測方法,其特徵在於:所述步驟S2中根據所述 自定義配置文件的內容,對所述待檢測的原始碼文件和檢測規則文件進行預處理的步驟具 體包括以下步驟: 521 :遍歷待檢測的原始碼文件並判斷原始碼文件大小,若原始碼文件為空,則標記為 不進行檢測的原始碼文件;將待檢測的原始碼文件與所述自定義配置文件中的自定義源代 碼檢測目錄進行比對,標記不進行檢測的原始碼文件; 522 :遍歷規則庫中的檢測規則文件,將所述檢測規則文件與所述自定義配置文件中的 自定義所需檢測規則進行比對,標記不進行檢測的規則文件。
3. 如權利要求2所述的瀏覽器兼容性檢測方法,其特徵在於:所述步驟S3具體為:採 用深度優先算法遍歷預處理後的需要檢測的原始碼文件中的文件夾直至遍歷到文件夾的 最底層,將最底層文件夾中的原始碼與規則庫中需要檢測的全部規則文件中的檢測規則進 行一一比對直至檢測完畢後返回上一層,檢測其他未被檢測的原始碼文件夾,直到全部檢 測完畢,找出兼容性問題並保存檢測結果。
4. 如權利要求3所述的瀏覽器兼容性檢測方法,其特徵在於:步驟S3中將最底層文件 夾中的原始碼與規則庫中需要檢測的全部規則文件中的檢測規則進行一一比對的步驟進 一步為:採用循環嵌套的方式調度規則庫中需要檢測的全部規則文件中的檢測規則,將最 底層文件夾中的原始碼與調度的檢測規則進行一一比對。
5. 如權利要求1至4任一項所述的瀏覽器兼容性檢測方法,其特徵在於:所述步驟S1 中的自定義配置文件包括自定義原始碼檢測目錄、自定義所需檢測規則、以及規則等級;所 述步驟S2中的規則文件為將每個檢測規則設置成獨立的可直接進行檢測的文件;所述步 驟S3中的規則庫包括預先整理提供的瀏覽器兼容性問題描述、造成的影響及解決方法的 規則組合。
6. 如權利要求5所述的瀏覽器兼容性檢測方法,其特徵在於:所述步驟S3中規則庫中 瀏覽器兼容性問題描述、造成的影響及解決方法的預先整理提供的步驟具體包括: 501 :定義URL地址、文件保存路徑,判斷是否存在信息保存文件夾,若存在,則將現有 文件備份,創建保存最終信息文件夾以及中間信息文件夾; 502 :清理提取網頁產生的中間文件; 503 :下載入口網頁,提取所述入口網頁中的兼容性問題編號,拼接下級URL地址; 504 :根據拼接的下級URL地址,下載所有具有兼容性問題網頁; 505 :運用正則表達式,處理下載到本地的具有兼容性問題的網頁,提出問題描述、造成 的影響以及解決方法。
7. -種瀏覽器兼容性檢測系統,其特徵在於包括: 用戶交互模塊,用於提供待檢測的原始碼文件及自定義配置文件; 規則調度模塊,用於根據所述自定義配置文件的內容,對所述待檢測的原始碼文件和 檢測規則文件進行預處理,標記不進行檢測的原始碼文件和不檢測的規則文件; 規則檢測模塊,用於根據預處理後的結果,將需要檢測的原始碼文件中的原始碼與規 則庫中需要檢測的全部規則文件中的檢測規則進行一一比對,找出兼容性問題並保存檢測 結果; 生成報表模塊,用於讀取檢測結果及針對檢測到兼容性問題的預先處理方案,生成報 表。
【文檔編號】G06F11/36GK104156307SQ201410314265
【公開日】2014年11月19日 申請日期:2014年7月3日 優先權日:2014年7月3日
【發明者】傅錦虎 申請人:安徽景行信息科技有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀