vlambda博客
学习文章列表

什么是WebView以及如何测试它

便利性是我们永远无法完全满足的。这就是为什么软件开发人员总是竭尽全力创造更好的用户体验,而不会影响功能。所有这一切都是为了在当今竞争激烈的业务中挽救流失。人们希望方便,这就是混合应用程序受到欢迎的原因。

混合应用程序有什么独特之处?WebViews!


混合应用

顾名思义,它们是Native和Web Applications的混合体。它们在应用程序商店中可供下载,并且需要从本机应用程序等设备进行访问身份验证,但它们还在应用程序(WebView)中嵌入了用于呈现HTML的浏览器。Instagram 是混合应用程序的一个很好的例子。

为了访问任何第三方链接,在设备上的新浏览器中打开它,结果导致想要使用的应用程序中移出来。这对用户体验而言是一场灾难,通过创建应用程序内浏览器窗口来解决这个问题,该窗口用于促进第三方网页作为活动布局的一部分。感谢WebViews!


为什么需要WebViews

  • 它们可以更好地控制应用程序的UI。

  • 如果只想更新应用程序的内容,则不必更新整个应用程序,例如,如果希望在应用程序或其他令人兴奋的优惠中公布即将到来的销售。

  • 不会被推送到另一个第三方应用程序,而是被重定向到应用程序内浏览器,从而提取Web上的内容。这提供了保持在预期应用中的便利性。以Instagram为例,需要在某些故事中向上滑动,然后通过应用内浏览器重定向到网页,而不是在Chrome,Safari,Firefox或任何其他浏览器中打开内容。可以通过向上/向下滚动,放大/缩小或搜索文本,在重定向的网页上自由导航内容。

  • WebView允许跨平台开发,从而降低开发人员的开发成本和灵活性。注意:不能将应用程序的单个构建用于多个操作系统。只能通过HTML,CSS,JavaScript等借助网络扩展来简化另一个版本的开发。

  • 公司通常旨在构建现有Web应用程序的包装应用程序。通过这样做,公司的目标是以相对较少的努力在应用程序商店中创建存在。此外,像Ionic这样的框架允许您将应用程序添加到应用程序商店并作为PWA部署到移动Web。


对于生成WebView,开发人员需要:

  • 开发一个webview 类的实例 。

  • 在应用程序中嵌入浏览器。

  • 在WebView库的帮助下添加浏览器功能。

  • 在Android Manifest文件中添加Internet权限。

  • 添加WebView代码以打开应用程序内浏览器。


WebView测试

指创建和执行测试用例,以检查WebView的有效工作机制。

 

在测试WebView时记下以下内容:

  • 通过中断加载的网页来验证应用程序是否根据其预期行为进行响应。

  • 测试WebView在不同网络模式下的响应 - 2G,3G,WiFi,LTE。

  • 还应测试特殊字符。随着放大/缩小,通过向上/向下滚动浏览网页内容或通过向左/向右滚动浏览屏幕。

  • 测试WebView对外部因素(如SMS,信号丢失,通知,呼叫等)的容忍度。

  • 通过Web内容中的超链接启动外部应用程序时,测试应用程序的行为。

  • 改进设备的方向并测试网络内容是否能够支持它们。

  • 测试图形显示是否令人满意。

  • 压缩浏览器窗口,查看文本是否正确压缩。

  • 跨浏览器平台将非常有助于测试上述测试技巧。它还将提供有关如何将WebView描述为目标受众的想法。


如何执行WebView测试

适用于Android WebView的Espresso Web - 此工具通过重用WebDriver API中的Atoms,帮助检查和控制WebView UI组件的行为。它是测试混合应用程序最常用的工具之一。需要检查应用程序的本机UI组件及其WebView UI组件的集成 。

在使用Espresso Web之前,需要彻底分析网站的源代码,以确定其方法的钩子。这就是为什么它可能变得非常复杂的大型网站。


替代方法

另一种方法是忘记第三方代码并仅关注基于Android的代码。基本上,WebView映射网站的元素; 允许用户通过Android View对象及其扩展与他们进行交互。这些视图没有使用findViewById(int id)无法访问它们的ID,也无法在应用程序包中访问这些ID。

这并不意味着无法追踪它们。可以在Android Device Monitor的帮助下,这是一个独立的工具,用于提供UI以帮助Android应用程序分析和调试的多个工具。

  • 需要使用Android设备监视器拍摄模拟器上每个屏幕的快照。

  • 了解WebViews的内部结构。

  • 在UiAutomator的帮助下对它们执行操作 。

这种方法不需要分析源代码,这种方式需要较少的工作来建立和维护代码。