摘要:上篇中初探了的一些功能和在前端自動化測試方面的可行性,本篇主要分析下的實現方式和源碼。文件分析完整文件目錄運行生成目錄分析出了及其組件代碼,可用和值的分析的文件和下面的五個文件。相關文章前端自動化上篇初步調研前端自動化下篇實踐應用
mode-module簡介上篇中初探了page-monitor的一些功能和在前端自動化測試方面的可行性,本篇主要分析下page-monitor的實現方式和源碼。
page-monitor的存在形式是node-module,依賴于node安裝和運行,簡單必須了解下node_modules
node-module是nodejs的模塊,符合commonJs規范【具體規范可以參考:http://javascript.ruanyifeng....】
簡單描述commonJs規范
1:文件即模塊,作用域在文件內,不允許重復,不會污染。
2:加載依賴出現順序,加載即運行,重復則利用緩存。
多說一句:這是amd 和cmd(commonJs)的本質區別,由于node多運行于服務端,加載比較快,因此比較適合cmd 規范,瀏覽器端的模塊則更適用于cmd的規范,個人理解沒有廣義的好壞之分
方便看源碼,貼出node_modole簡單構成和主要函數module
node內部提供一了一個modle的構造函數,所有的模塊都繼承和依賴于此模塊。
node module的引入 require命令。
其他加載規則,路徑設定不在此贅述。
完整文件目錄:
運行生成目錄分析:
出了node_module及其組件代碼,可用和值的分析的文件index.js 和phantomjs 下面的五個文件。
分析index.js代碼中無非變量聲明和引用,關鍵一句引用phantom的命令乳腺
// 多線程啟動位置 var proc = spawn(binPath, arr);
通過上面多線程的啟動node可以達到高效和并發處理測試任務的需求,分析下arr的內容如下圖:看到了 窗口大小,延時,ua,存放地址,diff變量等等
分析獲取DOM源碼獲取dom的源碼主要利用了web api evalution,evalution傳入一個xpath的參數,返回一個xpath的對象,之后通過遍歷和xpath規則生成規則化的json。
貼一個evalution api
為了看懂page-monitor的代碼舉個栗子
# evalution example: var headings = document.evaluate("/html/body//h2", document, null, XPathResult.ANY_TYPE, null); /* 檢索body中所有H2的所欲. * 結果存在于一個node的迭代器中 */ var thisHeading = headings.iterateNext(); var alertText = "Level 2 headings in this document are: "; while (thisHeading) { alertText += thisHeading.textContent + " "; thisHeading = headings.iterateNext(); } alert(alertText); // Alerts the text of all h2 elements
通過上面函數和page-monitor中walk.js函數最后一行,可以看出page-monitor 保存了四個元素:屬性[name,id等等],節點類型,位置[后期渲染],樣式的md5加密[樣式僅需要對比是否變化即可]
具體內容和dom結構如下:
對應的具體dom結構
diff代碼主要兩個作用
1:獲取差異
2:渲染差異
其中對比的策略:
歷史完全每個對比現在:獲取更新和刪除的內容
現在完全每個對比歷史:獲取更新和新增的內容
具體可以參考代碼
必須了解的web api 還有一個是querySeletor 也就是檢索的api,參考地址
document.querySelector()
了解了這個api就可以做一件事情:不對全局dom diff,只對特別關心的dom進行diff
實現方式:修改querySelector的根節點為Header
獲取的dom結構如下:根節點為header
獲取的頁面截圖如下:
本次在調研page-monitor的基礎上,對page-monitor的源碼實現進行分析;同時利用相關api修改,來只對核心頁面進行獲取優化。下一篇將會進一步思考page-monitor的應用。
相關文章:
【page-monitor 前端自動化 上篇】 初步調研
【page-monitor 前端自動化 下篇】 實踐應用
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/80031.html
摘要:貼一個細節圖其他分析小拽通過上面的舉例,旨在拋磚引玉,希望或者結構在前端的自動化測試有一定應用,提升產品質量。最終再上一張流程圖,便于分析相關文章前端自動化上篇初步調研前端自動化中篇源碼分析 通過page-diff的初步調研和源碼分析,確定page-diff在前端自動化測試和監控方面做一些事情。本篇主要介紹下,page-diff在具體的實踐中的一些應用 核心dom校驗 前端的快速發展,...
摘要:前端自動化測試主要在于變化快,不穩定,兼容性復雜故而,想通過較低的成本維護較為通用的自動化比較困難。本文旨在通過獲取和分析結構,調研能否通過監控和分析核心,來進行前端自動化測試。相關文章前端自動化中篇源碼分析前端自動化下篇實踐應用 前端自動化測試主要在于:變化快,不穩定,兼容性復雜;故而,想通過較低的成本維護較為通用的自動化case比較困難。本文旨在通過page-monitor獲取和分...
摘要:前端個靈魂拷問,徹底搞明白你就是中級前端工程師上篇感覺大家比較喜歡看這種類型的文章,以后會多一些。所有依賴這個模塊的語句,都定義在一個回調函數中,等到加載完成之后,這個回調函數才會運行。此規范其實是在推廣過程中產生的。 showImg(https://segmentfault.com/img/bVbwAMU?w=700&h=394); 前端20個靈魂拷問,徹底搞明白你就是中級前端工程師...
摘要:前端個靈魂拷問,徹底搞明白你就是中級前端工程師上篇感覺大家比較喜歡看這種類型的文章,以后會多一些。所有依賴這個模塊的語句,都定義在一個回調函數中,等到加載完成之后,這個回調函數才會運行。此規范其實是在推廣過程中產生的。 showImg(https://segmentfault.com/img/bVbwAMU?w=700&h=394); 前端20個靈魂拷問,徹底搞明白你就是中級前端工程師...
摘要:構造函數默認空閑的最大連接數為個,的時間為秒通過構造函數可以看出默認的空閑的最大連接數為個,的時間為秒。實例化實例化是在實例化時進行的在的構造函數中調用了省略省略緩存操作提供對進行操作的方法分別為和幾個操作。 1.引子 在了解OkHttp的復用連接池之前,我們首先要了解幾個概念。 TCP三次握手 通常我們進行HTTP連接網絡的時候我們會進行TCP的三次握手,然后傳輸數據,然后再釋放連接...
閱讀 1702·2021-11-25 09:43
閱讀 2665·2019-08-30 15:53
閱讀 1808·2019-08-30 15:52
閱讀 2898·2019-08-29 13:56
閱讀 3317·2019-08-26 12:12
閱讀 565·2019-08-23 17:58
閱讀 2127·2019-08-23 16:59
閱讀 932·2019-08-23 16:21