日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

网易严选的wkwebview测试之路

發(fā)布時(shí)間:2024/8/26 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网易严选的wkwebview测试之路 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文來(lái)自網(wǎng)易云社區(qū)

作者:孫嬌


UIWebView是蘋(píng)果繼承于UIView封裝的一個(gè)加載web內(nèi)容的類,它可以加載任何遠(yuǎn)端的web數(shù)據(jù)展示在你的頁(yè)面上,你可以像瀏覽器一樣前進(jìn)后退刷新等操作。不過(guò)蘋(píng)果在iOS8以后推出了WKWebView來(lái)加載Web。UIWebView自iOS2就有,WKWebView從iOS8才有,毫無(wú)疑問(wèn)WKWebView是將會(huì)逐步取代笨重的UIWebView。且UIWebView存在占用過(guò)多內(nèi)存,js執(zhí)行效率低等問(wèn)題。而WKWebView網(wǎng)頁(yè)加載速度大有提升,占用更少內(nèi)存。


WKWebView相比于UIWebView

  • WKWebView的內(nèi)存遠(yuǎn)遠(yuǎn)沒(méi)有UIWebView的開(kāi)銷大,沒(méi)有緩存

  • 擁有高達(dá)60FPS滾動(dòng)刷新率及內(nèi)置手勢(shì)

  • 支持了更多的HTML5特性

  • 高效的app和web信息交換通道

  • 允許JavaScript的Nitro庫(kù)加載并使用,UIWebView中限制了

  • 提供加載網(wǎng)頁(yè)進(jìn)度的屬性(estimatedProgress)

  • 將UIWebViewDelegate與UIWebView拆分成了14類與3個(gè)協(xié)議(以前很多不方便實(shí)現(xiàn)的功能得以實(shí)現(xiàn):官方文檔說(shuō)明)

基于以上種種優(yōu)勢(shì),嚴(yán)選APP在年后的第一個(gè)版本里實(shí)現(xiàn)了UIwebview到wkwebview的大步跨越,作為一名客戶端的測(cè)試人員,我更加關(guān)注的主要是wkwebview的各大特性背后帶來(lái)的測(cè)試點(diǎn),以下就從測(cè)試的視角分析一下替換wkwebview之后,測(cè)試中遇到比較多的問(wèn)題:


1、首先就是cookie的問(wèn)題

以前UIWebView會(huì)自動(dòng)去NSHTTPCookieStorage中讀取cookie,但是WKWebView并不會(huì)去讀取,因此導(dǎo)致cookie丟失以及一系列問(wèn)題,在測(cè)試的過(guò)程中我們發(fā)現(xiàn)在一個(gè)活動(dòng)頁(yè)面觸發(fā)了登錄之后,返回該頁(yè)面并沒(méi)有同步到登錄態(tài)的信息

從上圖可以看出,在app進(jìn)行登錄后,福利社的webview并沒(méi)有同步獲取相應(yīng)的登錄態(tài),究其原因,主要原因是:WKWebView Cookie 問(wèn)題在于 WKWebView 發(fā)起的請(qǐng)求不會(huì)自動(dòng)帶上存儲(chǔ)于 NSHTTPCookieStorage 容器中的 Cookie(當(dāng)然是開(kāi)發(fā)解釋給我聽(tīng)的),找到問(wèn)題所在修改之后的表現(xiàn):

表現(xiàn)完美!


2、wkwebview的本地html頁(yè)面加載失敗

嚴(yán)選app內(nèi)置了一份網(wǎng)絡(luò)解決方案,如若檢測(cè)到無(wú)網(wǎng)絡(luò)狀態(tài)可以查看這個(gè)本地頁(yè)面進(jìn)行網(wǎng)絡(luò)的配置(主要是iOS10系統(tǒng)剛推出的時(shí)候,需要用戶開(kāi)啟app啟動(dòng)網(wǎng)絡(luò)的權(quán)限才能使用的問(wèn)題),但是替換了wkwebview之后,無(wú)網(wǎng)絡(luò)狀態(tài)下本地的html網(wǎng)頁(yè)無(wú)法加載,結(jié)果:

開(kāi)發(fā)大大排查之后發(fā)現(xiàn)是wkwebview中加載的方法變了(wkwebview不支持用loadRequest的方法加載本地的靜態(tài)HTML),要替換不同的方法來(lái)加載,修復(fù)之后的效果


3、wkwebview頁(yè)面樣式問(wèn)題

在測(cè)試過(guò)程中,替換wkwebview之后,很多APP內(nèi)的H5頁(yè)面樣式出現(xiàn)了兼容的問(wèn)題,尤其是針對(duì)iPhone X的適配方面,對(duì)此我們只能全局查看各種H5頁(yè)面,一一檢查頁(yè)面是否錯(cuò)亂,大部分頁(yè)面的問(wèn)題都是頁(yè)面底部或者導(dǎo)航欄異常。

在測(cè)試的過(guò)程中我們遇到最多的問(wèn)題就是上述三個(gè)問(wèn)題,如果各位還有遇到其他的問(wèn)題,歡迎補(bǔ)充。

除了測(cè)試中遇到的問(wèn)題,測(cè)試完成之后,我們對(duì)wkwebview的性能也做了簡(jiǎn)單的統(tǒng)計(jì),主要是為了對(duì)比wkwebview相比較于UIwebview的優(yōu)勢(shì)在哪里,我們針對(duì)兩種不同的webview,在APP內(nèi)進(jìn)行一些正常用戶行為的操作(瀏覽首頁(yè)及其他頁(yè)面,查看商品詳情及評(píng)論圖片,瀏覽活動(dòng)及專題頁(yè)面,登錄查看購(gòu)物車及下單等等),對(duì)比統(tǒng)計(jì)了內(nèi)存的消耗占比。主要操作了三種機(jī)型(5s,7,6splus),三種操作系統(tǒng)(9,10,11)。

從上圖可以明顯的看出來(lái),wk在內(nèi)存消耗方面還是有顯著的提升的,尤其是針對(duì)性能較差的機(jī)器,如ios9系統(tǒng)的5s。

最后,WKWebView相較于UIWebView在整體上有較大的提升,滿足OS上面使用同一套控件的功能,同時(shí)對(duì)整個(gè)內(nèi)存的開(kāi)銷以及滾動(dòng)刷新率和JS交互做了優(yōu)化的處理。依據(jù)職責(zé)單一的原則,拆分成了三個(gè)協(xié)議去實(shí)現(xiàn)WebView的響應(yīng),解耦了JS交互和加載進(jìn)度的響應(yīng)處理。但是他有一個(gè)最致命的缺陷,就是WKWebView的請(qǐng)求不能被NSURLProtocol截獲。而UIwebview可以讓app對(duì)于H5容器使用NSURLProtocol技術(shù)將H5進(jìn)行離線包的處理,H5的圖片和Native的圖片公用一套緩存,因此WKWebView是沒(méi)有做緩存處理的,對(duì)網(wǎng)頁(yè)需要緩存的加載性能要求沒(méi)那么高的還是可以考慮UIWebView。

最最后,感謝開(kāi)發(fā)大大的耐心指導(dǎo)及細(xì)心講解webview背后的故事。


網(wǎng)易云免費(fèi)體驗(yàn)館,0成本體驗(yàn)20+款云產(chǎn)品!

更多網(wǎng)易研發(fā)、產(chǎn)品、運(yùn)營(yíng)經(jīng)驗(yàn)分享請(qǐng)?jiān)L問(wèn)網(wǎng)易云社區(qū)。


相關(guān)文章:
【推薦】?使用 Prometheus + Grafana 對(duì) Kubernetes 進(jìn)行性能監(jiān)控的實(shí)踐
【推薦】?Dubbo與HadoopRPC的區(qū)別
【推薦】?基于開(kāi)源,強(qiáng)于開(kāi)源,輕舟微服務(wù)解決方案深度解讀

轉(zhuǎn)載于:https://www.cnblogs.com/zyfd/p/9680946.html

總結(jié)

以上是生活随笔為你收集整理的网易严选的wkwebview测试之路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。