專利名稱:一種監(jiān)控頁面死鏈和js錯誤的方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及頁面質量監(jiān)控領域,具體地說涉及一種監(jiān)控頁面死鏈和js錯誤的方法及系統(tǒng)。
背景技術:
隨著互聯網技術的發(fā)展,涌現出越來越多的網站,各個網站又提供了越來越多的網頁。以前的網頁功能大部分是為了提供給用戶一些資訊,用戶通過瀏覽網頁內容可以獲取所需的信息;隨著用戶需求的提高,僅獲取文字信息已經不能滿足大部分用戶的需求,因此現在的網頁中又通過一些腳本程序實現了 一些交互性的功能。頁面的數量越來越多,復雜度越來越高,對頁面質量的準確監(jiān)控也就越發(fā)重要和困難。對頁面質量的監(jiān)控通常是指分析指定網頁中的鏈接,判斷該鏈接是否為死鏈。目前,將死鏈分為兩種,第一種是url對應的頁面根本不存在;第二種是通過js跳轉的頁面不存在。傳統(tǒng)的網頁監(jiān)控方式有兩種:一種方式是通過抓取頁面的方式驗證是否存在死鏈。采用這種方式可以有效分析出url所對應的頁面是否存在,但是該方法的最大局限性在于,若鏈接通過js跳轉而非指定的URL實現,則該方法無法檢測此類型的鏈接是否為死鏈。另一種方式是通過瀏覽器觸發(fā)js錯誤,以截圖的方式捕獲js報錯,進而實現自動化頁面監(jiān)控。該方法在瀏覽器中截取可能的js執(zhí)行錯誤的圖像,將該圖像用于驗證是否存在JS錯誤。采用這種通過截圖方式捕獲js報錯,技術實現難度較高,精確度不高,出現誤報的概率較高。因此,目前急需一種能夠高效、準確監(jiān)控頁面死鏈和js錯誤的頁面監(jiān)控方法。
發(fā)明內容
本發(fā)明提供一種監(jiān)控頁面死鏈和js錯誤的方法,用于自動化實現對線上頁面死鏈和js錯誤進行監(jiān)控。根據本發(fā)明的一個方面,提供一種監(jiān)控頁面死鏈和js錯誤的方法,其特征在于,包括以下步驟:a)響應于客戶端獲取頁面的請求,從提供所述頁面的服務器獲取所述頁面;b)向所述頁面中注入檢錯代碼,生成新頁面,并將所述新頁面發(fā)送至所述客戶端,所述檢錯代碼用于檢測所述客戶端執(zhí)行所述新頁面時是否會出現錯誤,當出現錯誤時,向錯誤收集服務器發(fā)送報錯信息。根據本發(fā)明的另一個方面,提供一種用于監(jiān)控頁面死鏈和js錯誤的系統(tǒng),其特征在于,包括:獲取裝置,用于響應于客戶端獲取頁面的請求,從提供所述頁面的服務器獲取所述頁面;生成裝置,用于向所述頁面中注入檢錯代碼,生成新頁面,并將所述新頁面發(fā)送至所述客戶端,所述檢錯代碼用于檢測所述客戶端執(zhí)行所述新頁面時是否會出現錯誤,當出現錯誤時,向錯誤收集服務器發(fā)送報錯信息。本發(fā)明提供的一種監(jiān)控頁面死鏈和js錯誤的方法及系統(tǒng),通過使原始頁面通過轉發(fā)代理,并在轉發(fā)代理中加入用于檢測和報錯的代碼,生成發(fā)送至客戶端的頁面,在保持原有頁面內容的前提下,可有效解決監(jiān)控js跳轉后頁面是否存在的難題;通過提供的各種觸發(fā)js事件的接口,提高了測試覆蓋率。采取轉發(fā)代理的方式能夠準確獲取錯誤異常,實現自動化監(jiān)控js跳轉錯誤。
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本發(fā)明的其它特征、目的和優(yōu)點將會變得更明顯:圖1示出根據本發(fā)明一種監(jiān)控頁面死鏈和js錯誤的方法的一種具體實施方式
的流程示意圖;圖2示出根據本發(fā)明一種監(jiān)控頁面死鏈和js錯誤的方法及系統(tǒng)的架構示意圖;圖3示出根據本發(fā)明一種監(jiān)控頁面死鏈和js錯誤的系統(tǒng)的一種具體實施方式
的結構示意圖;圖4示出根據本發(fā)明一種監(jiān)控頁面死鏈和js錯誤的系統(tǒng)的另一種具體實施方式
的結構示意圖。附圖中相同或相似的附圖標記代表相同或相似的部件。
具體實施例方式為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明的實施例作詳細描述。下面詳細描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。下文的公開提供了許多不同的實施例或例子用來實現本發(fā)明的不同結構。為了簡化本發(fā)明的公開,下文中對特定例子的部件和設置進行描述。當然,它們僅僅為示例,并且目的不在于限制本發(fā)明。此外,本發(fā)明可以在不同例子中重復參考數字和/或字母。這種重復是為了簡化和清楚的目的,其本身不指示所討論各種實施例和/或設置之間的關系。應當注意,在附圖中所圖示的部件不一定按比例繪制。本發(fā)明省略了對公知組件和處理技術及工藝的描述以避免不必要地限制本發(fā)明。如圖1所示,圖1為根據本發(fā)明提供的一種監(jiān)控頁面死鏈和js錯誤的方法的一個具體實施方式
的流程示意圖,包括步驟SlOl S102,下面結合具體的實施例對圖1所示的方法進行說明。步驟S101,響應于客戶端獲取頁面的請求,從提供所述頁面的服務器獲取所述頁面。隨著互聯網技術的發(fā)展,用戶可以從網絡中獲得越來越多的資訊,或執(zhí)行各種各樣的應用功能。因此,網絡頁面包含的信息量越來越多,也越來越復雜。瀏覽器作為一種客戶端軟件,是用戶訪問互聯網必不可少的工具,通過瀏覽器瀏覽網頁對用戶而言是最便捷的方式。
因此,上述客戶端優(yōu)選為裝置于各種終端的瀏覽器。所述終端包括但不限于PC、筆記本電腦、PDA(個人掌上電腦)、手機、平板電腦等具有可訪問互聯網功能的終端。所述服務器為可提供頁面的服務商。例如,搜狐、百度、新浪等網頁的提供服務者。例如,當裝置于智能手機中的360瀏覽器想要訪問百度首頁時,需要發(fā)送一個獲取百度首頁的請求。當系統(tǒng)接收到所述獲取百度首頁的請求,就會對該請求做出響應,進一步從提供百度首頁的服務器獲取該頁面。又如,當裝置于臺式機上的百度瀏覽器要訪問百度地圖時,需要發(fā)送一個獲取百度地圖的請求。當系統(tǒng)接收到所述獲取百度地圖的請求,就會對該請求做出響應,進一步從提供百度地圖的服務器獲取該頁面。當獲取到客戶端請求的頁面時,進一步執(zhí)行步驟S102,向所述頁面中注入檢錯代碼,生成新頁面,并將所述新頁面發(fā)送至所述客戶端,所述檢錯代碼用于檢測所述客戶端執(zhí)行所述新頁面時是否會出現錯誤,當出現錯誤時,向錯誤收集服務器發(fā)送報錯信息。如,當獲取到百度首頁之后,解析出百度首頁的源代碼,在源代碼的基礎上增加檢錯代碼,生成新頁面。由于檢錯代碼只是用于檢測頁面加載是否有錯,并進行錯誤提交操作,并不會影響原頁面本身的文字、圖片、鏈接等內容和效果。因此,將上述新頁面發(fā)送給360瀏覽器,并不會對在該瀏覽器上打開百度首頁并進行瀏覽的智能手機用戶造成影響。又如,當獲取到百度地圖之后,解析出百度地圖的源代碼,在源代碼的基礎上增加檢錯代碼,生成新頁面。同樣,由于檢錯代碼只是用于檢測頁面加載是否有錯,并進行錯誤提交操作,并不會影響原頁面本身的文字、圖片、鏈接等內容和效果。因此,將上述新頁面發(fā)送給百度瀏覽器,并不會對在該瀏覽器上打開百度地圖并進行瀏覽的臺式機用戶造成影響。為了使檢錯和報錯過程更加清晰、完善,優(yōu)選的,所述檢錯代碼又分為檢驗代碼和錯誤提交代碼兩種。檢驗代碼用于檢測所述客戶端執(zhí)行所述新頁面時是否會出現錯誤。進一步地,檢驗代碼用于監(jiān)控網頁中js腳本執(zhí)行時是否出錯,所述檢驗代碼可采用js腳本編碼實現。錯誤提交代碼則用于當出現錯誤時,向所述錯誤收集服務器發(fā)送報錯信息。為了能夠正確判斷js跳轉后的頁面能否正確訪問、頁面加載js是否有錯誤或者頁面CSS加載是否有錯誤,需要進一步封裝selenium-sever,以能夠為各種觸發(fā)事件提供接口。在現有技術中,selenium-server用于提供多種點擊事件的接口,但是這些接口的功能并不能準確用于觸發(fā)js事件。因此在本發(fā)明中,需要對selenium-server進行重新封裝,并豐富其內容,調用其接口即可實現觸發(fā)js事件的功能,并能準確驗證頁面的各種js事件是否正確。可選的,所述觸發(fā)事件包括但不限于:點擊、長按、劃動、圈選、打鉤、畫叉、涂抹或其他在頁面上進行操作的方式。除了能夠高覆蓋率地驗證各種js事件的加載情況,通過調用封裝好的selenium-server還可以類似地驗證css的加載正確性。另外,使用該方法還可以通過使客戶端執(zhí)行新頁面,而驗證url頁面是否存在。具體地,當客戶端加載被注入檢驗代碼和錯誤提交代碼的頁面時,如果加載失敗,檢驗代碼中封裝的selenium-server的接口會通過錯誤提交代碼向錯誤收集服務器發(fā)送報錯消息。通過這種方法,可以很簡單地監(jiān)控通過js跳轉后的頁面是否存在或者js、css執(zhí)行異常等問題。參考圖2,圖2示出根據本發(fā)明一種監(jiān)控頁面死鏈和js錯誤的方法及系統(tǒng)的架構示意圖。系統(tǒng)10獲取到裝載于各種終端中的客戶端20的獲取也面的請求,從提供所述頁面的服務器30中獲取所述頁面。當獲取到所述頁面后,系統(tǒng)10向所述頁面中注入檢錯代碼,以生成新頁面,并將新頁面發(fā)送至終端20。系統(tǒng)10注入的檢錯代碼用于檢測客戶端20在執(zhí)行所述新頁面時是否會出現錯誤,當出錯時,會向錯誤收集服務器40發(fā)送報錯消息。圖3示出根據本發(fā)明一種監(jiān)控頁面死鏈和js錯誤的系統(tǒng)10的一種具體實施方式
的結構示意圖。系統(tǒng)10包括:獲取裝置11和生成裝置12。獲取裝置11用于響應于客戶端20獲取頁面的請求,從提供所述頁面的服務器30獲取所述頁面。隨著互聯網技術的發(fā)展,用戶可以從網絡中獲得越來越多的資訊,或執(zhí)行各種各樣的應用功能。因此,網絡頁面包含的信息量越來越多,也越來越復雜。瀏覽器作為一種客戶端軟件,是用戶訪問互聯網必不可少的工具,通過瀏覽器瀏覽網頁對用戶而言是最便捷的方式。因此,上述客戶端20優(yōu)選為裝置于各種終端的瀏覽器。所述終端包括但不限于PC、筆記本電腦、PDA(個人掌上電腦)、手機、平板電腦等具有可訪問互聯網功能的終端。所述服務器30為可提供頁面的服務者。例如,搜狐、百度、新浪等網頁的提供服務者。例如,當裝置于智能手機中的360瀏覽器20i想要訪問百度首頁時,需要發(fā)送一個獲取百度首頁的請求。當系統(tǒng)10接收到所述獲取百度首頁的請求,就會對該請求做出響應,進一步從提供百度首頁的服務器30獲取該頁面。又如,當裝置于臺式機上的百度瀏覽器202要訪問百度地圖時,需要發(fā)送一個獲取百度地圖的請求。當系統(tǒng)10接收到所述獲取百度地圖的請求,就會對該請求做出響應,進一步從提供百度地圖的服務器30獲取該頁面。當系統(tǒng)10獲取到客戶端20請求的頁面時,由生成裝置12向所述頁面中注入檢錯代碼,生成新頁面,并將所述新頁面發(fā)送至所述客戶端20,所述檢錯代碼用于檢測所述客戶端20執(zhí)行所述新頁面時是否會出現錯誤,當出現錯誤時,向錯誤收集服務器40發(fā)送報錯信
肩、O如,當獲取到百度首頁之后,生成裝置12解析出百度首頁的源代碼,在源代碼的基礎上增加檢錯代碼,生成新頁面。由于檢錯代碼只是用于檢測頁面加載是否有錯,并進行錯誤提交操作,并不會影響原頁面本身的文字、圖片、鏈接等內容和效果。因此,將上述新頁面發(fā)送給360瀏覽器20i,并不會對在該瀏覽器上打開百度首頁并進行瀏覽的智能手機用戶造成影響。又如,當獲取到百度地圖之后,生成裝置12解析出百度地圖的源代碼,在源代碼的基礎上增加檢錯代碼,生成新頁面。同樣,由于檢錯代碼只是用于檢測頁面加載是否有錯,并進行錯誤提交操作,并不會影響原頁面本身的文字、圖片、鏈接等內容和效果。因此,將上述新頁面發(fā)送給百度瀏覽器202,并不會對在該瀏覽器上打開百度地圖并進行瀏覽的臺式機用戶造成影響。為了使檢錯和報錯過程更加清晰、完善,優(yōu)選的,所述檢錯代碼又分為檢驗代碼和錯誤提交代碼兩種。檢驗代碼用于檢測所述客戶端20執(zhí)行所述新頁面時是否會出現錯誤。進一步地,檢驗代碼用于監(jiān)控網頁中js腳本執(zhí)行時是否出錯,所述檢驗代碼可采用js腳本編碼實現。錯誤提交代碼則用于當出現錯誤時,向所述錯誤收集服務器40發(fā)送報錯信息。參考圖4,優(yōu)選的,為了能夠正確判斷js跳轉后的頁面能否正確訪問、頁面加載js是否有錯誤或者頁面CSS加載是否有錯誤,需要封裝裝置13進一步封裝selenium-sever,以能夠為各種觸發(fā)事件提供接口。在現有技術中,selenium-server用于提供多種點擊事件的接口,但是這些接口的功能并不能準確用于觸發(fā)js事件。因此在本發(fā)明中,需要封裝裝置13對selenium-server進行重新封裝,并豐富其內容,調用其接口即可實現觸發(fā)js事件的功能,并能準確驗證頁面的各種js事件是否正確??蛇x的,所述觸發(fā)事件包括但不限于:點擊、長按、劃動、圈選、打鉤、畫叉、涂抹或其他在頁面上進行操作的方式。除了能夠高覆蓋率地驗證各種js事件的加載情況,通過調用封裝好的selenium-server還可以類似地驗證css的加載正確性。另外,使用該方法還可以通過使客戶端20執(zhí)行新頁面,而驗證url頁面是否存在。具體地,當客戶端20加載被注入檢驗代碼和錯誤提交代碼的頁面時,如果加載失敗,檢驗代碼中封裝的selenium-server的接口會通過錯誤提交代碼向錯誤收集服務器40發(fā)送報錯消息。通過這種方法,可以很簡單地監(jiān)控通過js跳轉后的頁面是否存在或者js、css執(zhí)行異常等問題。通過本發(fā)明的方法以及系統(tǒng),解決了監(jiān)控js跳轉后頁面是否存在的難題,實現了自動化j s監(jiān)控監(jiān)控。對于本領域技術人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現本發(fā)明。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內的所有變化涵括在本發(fā)明內。不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。此夕卜,顯然“包括” 一詞不排除其他模塊或步驟,單數不排除復數。
權利要求
1.一種監(jiān)控頁面死鏈和js錯誤的方法,其特征在于,包括以下步驟: a)響應于客戶端獲取頁面的請求,從提供所述頁面的服務器獲取所述頁面; b)向所述頁面中注入檢錯代碼,生成新頁面,并將所述新頁面發(fā)送至所述客戶端,所述檢錯代碼用于檢測所述客戶端執(zhí)行所述新頁面時是否會出現錯誤,當出現錯誤時,向錯誤收集服務器發(fā)送報錯信息。
2.根據權利要求1所述的方法,其特征在于,所述檢錯代碼包括:檢驗代碼和錯誤提交代碼; 所述檢驗代碼用于檢測所述客戶端執(zhí)行所述新頁面時是否會出現錯誤; 所述錯誤提交代碼用于,當出現錯誤時,向所述錯誤收集服務器發(fā)送報錯信息。
3.根據權利要求2所述的方法,其特征在于,所述檢驗代碼為js檢驗代碼。
4.根據權利要求3所述的方法,其特征在于,封裝selenium-sever,提供多種觸發(fā)事件的接口給所述js檢驗代碼調用。
5.根據權利要求4所述的方法,所述觸發(fā)事件包括:點擊、長按、劃動、圈選、打鉤、畫叉、涂抹或其他在頁面上進行操作的方式。
6.根據權利要求1 5任一項所述的方法,其特征在于,所述客戶端執(zhí)行所述新頁面時出現的錯誤包括:所述頁面鏈接不存在、所述頁面加載js失敗、所述頁面通過js跳轉后有錯、CSS加載錯誤。
7.一種用于監(jiān)控頁面死鏈和js錯誤的系統(tǒng),其特征在于,包括: 獲取裝置,用于響應于客戶端獲取頁面的請求,從提供所述頁面的服務器獲取所述頁面; 生成裝置,用于向所述頁面中注入檢錯代碼,生成新頁面,并將所述新頁面發(fā)送至所述客戶端,所述檢錯代碼用于檢測所述客戶端執(zhí)行所述新頁面時是否會出現錯誤,當出現錯誤時,向錯誤收集服務器發(fā)送報錯信息。
8.根據權利要求7所述的系統(tǒng),其特征在于,所述檢錯代碼包括:檢驗代碼和錯誤提交代碼; 所述檢驗代碼用于檢測所述客戶端執(zhí)行所述新頁面時是否會出現錯誤; 所述錯誤提交代碼用于,當出現錯誤時,向所述錯誤收集服務器發(fā)送報錯信息。
9.根據權利要求8所述的系統(tǒng),其特征在于,所述檢驗代碼為js檢驗代碼。
10.根據權利要求9所述的系統(tǒng),其特征在于,還包括: 封裝裝置,用于封裝selenium-sever,提供多種觸發(fā)事件的接口給所述js檢驗代碼調用。
11.根據權利要求10所述的系統(tǒng),所述觸發(fā)事件包括:點擊、長按、劃動、圈選、打鉤、畫叉、涂抹或其他在頁面上進行操作的方式。
12.根據權利要求7 11任一項所述的系統(tǒng),其特征在于,所述客戶端執(zhí)行所述新頁面時出現的錯誤包括:所述頁面鏈接不存在、所述頁面加載js失敗、所述頁面通過js跳轉后有錯、CSS加載錯誤。
全文摘要
本發(fā)明提供一種監(jiān)控頁面死鏈和js錯誤的方法,包括響應于客戶端獲取頁面的請求,從提供所述頁面的服務器獲取所述頁面;向所述頁面中注入檢錯代碼,生成新頁面,并將所述新頁面發(fā)送至所述客戶端,所述檢錯代碼用于檢測所述客戶端執(zhí)行所述新頁面時是否會出現錯誤,當出現錯誤時,向錯誤收集服務器發(fā)送報錯信息。相應的,本發(fā)明還提供一種使用該方法的系統(tǒng)。本發(fā)明可以有效監(jiān)控js跳轉后頁面的質量,提高了測試覆蓋率以及測試效率。
文檔編號G06F17/30GK103198062SQ201210001129
公開日2013年7月10日 申請日期2012年1月4日 優(yōu)先權日2012年1月4日
發(fā)明者于云濤, 金敬亭 申請人:百度在線網絡技術(北京)有限公司