本文来自网易云社区

作者:孙娇

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测试之路相关推荐

  1. 网易严选数据仓库规范化之路

    数据为王的时代,数据量从最初的几十G,慢慢沉淀到几十T,甚至几十PB的量.数据工程师,也从最初的ETL工程师慢慢成长为数据全栈工程师:采集.同步.模型.离线.实时.规范.平台.工具.产品.交互.保障. ...

  2. 离开网易的转型之路1:选择测试之路-路上的迷茫

    Infoq发布了文章,这里我还是吐槽原文,未修改的,让大家品味下: 1.选择测试之路-路上的迷茫 2010年12月31日,在网易从事了多年开发之后,依依不舍地离开,面临的是一个完全从零开始的全新职位: ...

  3. 离开网易的转型之路3:热爱测试之路-路上的风景

    Infoq发布了文章,这里我还是吐槽原文,未修改的,让大家品味下: 3.热爱测试之路-路上的风景 如果问有没有后悔做tester? 我问自己:做的开心吗?产品质量提升了吗?看到自己的前景了吗?找到hi ...

  4. 互联网日报 | 网易严选宣布退出双十一大战;抖音企业号数量突破500万;大兴机场首推外卖直达登机口...

    今日看点 ✦ 网易严选宣布退出双十一大战:不发战报,不做复杂优惠玩法 ✦ 盒马火锅正式在全国盒马.饿了么同步上线发售,投入将不设上限 ✦ 抖音企业号数量突破500万,内容日均浏览量达200亿次 ✦ 饿 ...

  5. 网易严选应用的云原生演进实践

    1. 背景 Cloud Native 这个名词最近几年一直很火,Pivotal和CNCF 都出过相关的定义,但本质都是为了引导应用在业务日益复杂多变的场景下可以更好地利用云基建,做到更加敏捷高效.20 ...

  6. 网易 盖楼 实现_网易严选宣布“退出鼓吹过度消费的双十一”网友:逆向营销...

    网易严选官方微博11月4日晚发文宣布退出今年的双十一大战.网易严选表示:"要退出这个鼓吹过度消费.为数字狂欢的双十一".该微博发出后,引起了广大网友的热议. 网易严选在微博中表示, ...

  7. 11月24日杭州大数据技术沙龙来袭,网易大数据、网易严选、蚂蚁金服大咖亲身经验分享!

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 从"互联网+.移动互联网.AI+"等概念的更迭,大家对数据的认知越来越清晰.数据既是线上场景的产物,反之又作用线上场景的持续优化 ...

  8. 网易严选数仓任务治理实践

    ‍背景 在过去的2020年,网易严选在数据任务治理方面存在一些迫切希望改善及提升的点,2020年初在部门负责人和杭研数科领导的带领下,正式组建团队以"共建"的方式来解决这些希望改善 ...

  9. 网易严选库存中心设计实践

    严选作为一家自营品牌电商,核心竞争力之一是对供应链的把控能力.在这其中,对库存的管理更是重中之重.如何降低库转.降低缺货率,是业务同学和分析师们几年来持续研究的课题.而这些课题,都建立在库存数据管理的 ...

最新文章

  1. 你所知道的Java单例模式并不是单例模式
  2. easyUI添加行操作
  3. 基于运动相关分析的实时多源异构传感器时空标定方法研究
  4. 规划2021年技术路标,百度研究院做出了这样一份预测
  5. Linux之Sed工具的使用详解
  6. 【Android 性能优化】应用启动优化 ( 安卓应用启动分析 | Launcher 应用简介 | Launcher 应用源码简介 | Launcher 应用快捷方式图标点击方法分析 )
  7. Python科学计算工具:NumPy第一部分
  8. python3 虚拟环境 pip 版本_【python知识】 - Python3之PIPENV虚拟环境及封装
  9. 域名升级访问中拿笔记好_SEO优化中如何让你的页面访问速度更快
  10. 非法关机 mysql_转 mysql数据库非法关机铁血教训
  11. Unit01: Servlet基础 、 HTTP协议
  12. C语言实现舒尔特表格生成器
  13. mvc5 ef6 mysql code first 架构_跟蓝狐学MVC教程--MVC5与EF6 Code First 第一个入门完整实例教程...
  14. vue在刷新页面的时候调取方法
  15. 技术是把双刃剑,需要好好保管
  16. 形容词记忆(二):ful,ous,ant后缀常用词
  17. python学习5(input函数)
  18. 《狂飙》壁纸太帅,Python自动切换太酷(8)
  19. 大龄Android 开发们最担忧的事儿,太难了~
  20. Django Rest framework (看完直接上手用)

热门文章

  1. MySQL:行锁、表锁、乐观锁、悲观锁、读锁、写锁
  2. java错误:The superclass javax.servlet.http.HttpServlet was not found on the Java Bu
  3. BZOJ2388 : 旅行规划
  4. [DOM Event Learning] Section 2 概念梳理 什么是事件 DOM Event
  5. DataGridView加入CheckBox列 (VB)
  6. Failed to connect to SDP server on FF:FF:FF:00:00:00: Connection refused问题解决方法
  7. s6-8 TCP 拥塞控制
  8. w3m linux,Linux 终端浏览器 w3m
  9. oracle result_cache_max_size,oracle database 11g新特性之设置result cache-Oracle
  10. 春风吹用计算机的谱子,方大同《春风吹》简谱