网易严选的wkwebview测试之路
本文來自網易云社區
作者:孫嬌
UIWebView是蘋果繼承于UIView封裝的一個加載web內容的類,它可以加載任何遠端的web數據展示在你的頁面上,你可以像瀏覽器一樣前進后退刷新等操作。不過蘋果在iOS8以后推出了WKWebView來加載Web。UIWebView自iOS2就有,WKWebView從iOS8才有,毫無疑問WKWebView是將會逐步取代笨重的UIWebView。且UIWebView存在占用過多內存,js執行效率低等問題。而WKWebView網頁加載速度大有提升,占用更少內存。
WKWebView相比于UIWebView
WKWebView的內存遠遠沒有UIWebView的開銷大,沒有緩存
擁有高達60FPS滾動刷新率及內置手勢
支持了更多的HTML5特性
高效的app和web信息交換通道
允許JavaScript的Nitro庫加載并使用,UIWebView中限制了
提供加載網頁進度的屬性(estimatedProgress)
將UIWebViewDelegate與UIWebView拆分成了14類與3個協議(以前很多不方便實現的功能得以實現:官方文檔說明)
基于以上種種優勢,嚴選APP在年后的第一個版本里實現了UIwebview到wkwebview的大步跨越,作為一名客戶端的測試人員,我更加關注的主要是wkwebview的各大特性背后帶來的測試點,以下就從測試的視角分析一下替換wkwebview之后,測試中遇到比較多的問題:
1、首先就是cookie的問題
以前UIWebView會自動去NSHTTPCookieStorage中讀取cookie,但是WKWebView并不會去讀取,因此導致cookie丟失以及一系列問題,在測試的過程中我們發現在一個活動頁面觸發了登錄之后,返回該頁面并沒有同步到登錄態的信息
從上圖可以看出,在app進行登錄后,福利社的webview并沒有同步獲取相應的登錄態,究其原因,主要原因是:WKWebView Cookie 問題在于 WKWebView 發起的請求不會自動帶上存儲于 NSHTTPCookieStorage 容器中的 Cookie(當然是開發解釋給我聽的),找到問題所在修改之后的表現:
表現完美!
2、wkwebview的本地html頁面加載失敗
嚴選app內置了一份網絡解決方案,如若檢測到無網絡狀態可以查看這個本地頁面進行網絡的配置(主要是iOS10系統剛推出的時候,需要用戶開啟app啟動網絡的權限才能使用的問題),但是替換了wkwebview之后,無網絡狀態下本地的html網頁無法加載,結果:
開發大大排查之后發現是wkwebview中加載的方法變了(wkwebview不支持用loadRequest的方法加載本地的靜態HTML),要替換不同的方法來加載,修復之后的效果
3、wkwebview頁面樣式問題
在測試過程中,替換wkwebview之后,很多APP內的H5頁面樣式出現了兼容的問題,尤其是針對iPhone X的適配方面,對此我們只能全局查看各種H5頁面,一一檢查頁面是否錯亂,大部分頁面的問題都是頁面底部或者導航欄異常。
在測試的過程中我們遇到最多的問題就是上述三個問題,如果各位還有遇到其他的問題,歡迎補充。
除了測試中遇到的問題,測試完成之后,我們對wkwebview的性能也做了簡單的統計,主要是為了對比wkwebview相比較于UIwebview的優勢在哪里,我們針對兩種不同的webview,在APP內進行一些正常用戶行為的操作(瀏覽首頁及其他頁面,查看商品詳情及評論圖片,瀏覽活動及專題頁面,登錄查看購物車及下單等等),對比統計了內存的消耗占比。主要操作了三種機型(5s,7,6splus),三種操作系統(9,10,11)。
從上圖可以明顯的看出來,wk在內存消耗方面還是有顯著的提升的,尤其是針對性能較差的機器,如ios9系統的5s。
最后,WKWebView相較于UIWebView在整體上有較大的提升,滿足OS上面使用同一套控件的功能,同時對整個內存的開銷以及滾動刷新率和JS交互做了優化的處理。依據職責單一的原則,拆分成了三個協議去實現WebView的響應,解耦了JS交互和加載進度的響應處理。但是他有一個最致命的缺陷,就是WKWebView的請求不能被NSURLProtocol截獲。而UIwebview可以讓app對于H5容器使用NSURLProtocol技術將H5進行離線包的處理,H5的圖片和Native的圖片公用一套緩存,因此WKWebView是沒有做緩存處理的,對網頁需要緩存的加載性能要求沒那么高的還是可以考慮UIWebView。
最最后,感謝開發大大的耐心指導及細心講解webview背后的故事。
網易云免費體驗館,0成本體驗20+款云產品!
更多網易研發、產品、運營經驗分享請訪問網易云社區。
相關文章:
【推薦】?使用 Prometheus + Grafana 對 Kubernetes 進行性能監控的實踐
【推薦】?Dubbo與HadoopRPC的區別
【推薦】?基于開源,強于開源,輕舟微服務解決方案深度解讀
轉載于:https://www.cnblogs.com/zyfd/p/9680946.html
總結
以上是生活随笔為你收集整理的网易严选的wkwebview测试之路的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php-fpm.conf 解析
- 下一篇: codeforces 516c// Dr