WebView 以及如何测试
混合应用
顾名思义,它们是本机应用程序和 Web 应用程序的混合体。它们可以在应用程序商店中下载,并且需要像本机应用程序一样从设备进行访问身份验证,但它们也有一个嵌入在应用程序中的浏览器(WebView)用于呈现 HTML。 Instagram 是混合应用程序的一个很好的例子。
还记得有一次,为了访问任何第三方链接,我们常常在设备上的新浏览器中打开它,结果导致我们从我们想要使用的应用程序中移出?这对于用户体验来说是一场灾难,通过创建一个应用内浏览器窗口来促进第三方网页作为活动布局的一部分,解决了这个问题。向 WebView 致敬!
为什么需要 WebView?
它们可以更好地控制应用程序的 UI。
如果您只想更新应用程序的内容,例如您希望在应用程序上宣传即将进行的促销活动或其他一些令人兴奋的优惠,则不必更新整个应用程序。
您不会被推送到另一个第三方应用程序,而是被重定向到应用程序内浏览器,该浏览器会为您从网络中提取内容。这提供了留在预期应用中的便利。以 Instagram 为例,您需要在某些故事中向上滑动,然后通过应用内浏览器将您重定向到网页,而不是在 Chrome、Safari、Firefox 或任何其他浏览器中打开内容。您可以通过向上/向下滚动、放大/缩小或搜索文本来自由浏览重定向网页上的内容。
WebView 允许跨平台开发,从而降低开发成本并提高开发人员的灵活性。注意:尽管如此,我们无法使应用程序的单个构建能够在多个操作系统上运行。我们只能借助 HTML、CSS、JavaScript 等 Web 扩展来简化另一个版本的开发。
公司通常旨在构建现有 Web 应用程序的包装应用程序。通过这样做,公司的目标是以相对较少的努力在应用程序商店中占据一席之地。此外, Ionic等框架 允许您将应用程序添加到应用程序商店并作为 PWA 部署到移动网络。
为了生成 WebView,开发人员需要:
开发一个 webview 类的实例。
在您的应用程序中嵌入浏览器。
在 WebView 库的帮助下添加浏览器功能。
在 Android Manifest 文件中添加互联网权限。
添加 WebView 的代码以打开应用内浏览器。
WebView测试 - 指创建并执行测试用例以检查WebView的有效工作机制。
测试 WebView 时请注意以下事项:
通过中断网页加载来验证应用程序是否按照其预期行为进行响应。
如果您的内容在 Web 视图中包含超链接的电子邮件地址,请确保点击这些超链接时会打开设备中的邮件应用程序。
以类似的方式测试超链接的电话号码 - 是否路由用户拨打应用程序?另外,如果设备中未插入 SIM 卡,该超链接将如何响应?
测试WebView在不同网络模式下的响应——2G、3G、WiFi、LTE。
还应该测试特殊字符。除了放大/缩小之外,还可以通过向上/向下滚动来浏览网页内容,或者通过向左/向右滚动来浏览屏幕。
测试 WebView 对短信、信号丢失、通知、通话等外部因素的容忍度。
当通过 Web 内容的超链接启动外部应用程序时,测试应用程序的行为。
改变设备的方向并测试您的网络内容是否能够支持它们。
测试图形显示是否令人满意。
压缩浏览器窗口并查看文本是否被适当压缩。
一个跨浏览器的平台对于测试上面提到的测试技巧会非常有帮助。它还将提供有关如何向目标受众描绘 WebView 的想法。
如何执行 WebView 测试
Espresso Web for Android WebView – 该工具通过重用 WebDriver API 中的Atom来帮助检查和控制 WebView UI 组件的行为。它是测试混合应用程序最常用的工具之一。需要检查应用程序的本机 UI 组件及其 WebView UI 组件的集成。
在使用 Espresso Web 之前,您需要彻底分析网站的源代码,以确定 其方法的挂钩。这就是为什么大型网站可能变得非常复杂的原因。
替代方法
另一种方法是忘记第三方代码,只关注基于 Android 的代码。基本上,WebView 映射网站的元素;允许用户通过 Android View 对象及其扩展与它们进行交互。这些视图没有 ID,因此无法使用 findViewById(int id) 访问它们,您也无法在应用程序包中访问这些 ID。
这并不意味着您无法跟踪它们。您可以借助 Android Device Monitor,这是一个独立的工具,可提供 UI 来帮助多种工具进行 Android 应用程序分析和调试。
您需要使用 Android 设备监视器拍摄模拟器上每个屏幕的快照。
了解 WebView 的内部结构。
在UiAutomator的帮助下对它们执行操作 。
这种方法不需要您分析源代码,并且这种方法在建立和维护代码方面需要更少的精力。
现在,如果有人在 WebView 上开始对话。我希望你能够粉碎它。干杯!
相关文章:
WebView 以及如何测试
混合应用 顾名思义,它们是本机应用程序和 Web 应用程序的混合体。它们可以在应用程序商店中下载,并且需要像本机应用程序一样从设备进行访问身份验证,但它们也有一个嵌入在应用程序中的浏览器(WebView)用于呈现 HTML。…...

Jetpack:013-Jetpack底部导航栏
文章目录 1. 概念介绍2. 使用方法2.1 NavigationBar2.2 NavigationBarItem 3. 示例代码3.1 代码和注释3.2 代码难点3.3 运行效果 4. 内容总结 我们在上一章回中介绍了Jetpack中弹出菜单相关的内容,本章回中将介绍 底部导航栏。闲话休提,让我们一起Talk …...
MATLAB - excel 读取
matlab中excel 读取 1. 写入excel文件 - xlswrite2. 读取excel文件 - xlsread 1. 写入excel文件 - xlswrite xlswrite(filename,A,sheet,xlRange) % 写入字符串 % 注意事项:Str需要是Cell格式,否则一个字母占一格 % Str {‘abc’}; xlswr…...

【AIGC核心技术剖析】Hotshot-XL 一种 AI 文本转 GIF 模型(论文 + 代码:经过训练可与Stable Diffusion XL一起使用)
Hotshot-XL 是一种 AI 文本转 GIF 模型,经过训练可与Stable Diffusion XL一起使用。 Hotshot-XL 可以使用任何经过微调的 SDXL 模型生成 GIF。这意味着两件事: 您将能够使用您可能想要使用的任何现有或新微调的 SDXL 模型制作 GIF。 如果您想制作个性化主题的 GIF,您可以…...
2023年9月青少年软件编程(C 语言) 等级考试试卷(八级)
2023年9月青少年软件编程(C 语言) 等级考试试卷(八级) 第 1 题 最短路径问题 平面上有n个点(n<100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。 若有连线࿰…...

MS17010(永恒之蓝)漏洞实战
曾因苦难多壮志,不教红尘惑坚心。 工具检测 实战过程 使用搜索命令,搜索ms17_010 search ms17_010 搜索网段中主机漏洞 use auxiliary/scanner/smb/smb_ms17_010 照例,show options 看一下配置 设置网段,run运行就行了 使用攻…...
ROS自学笔记十三:VScode的介绍和安装
Visual Studio Code(简称VS Code)是一款由Microsoft开发的免费、轻量级、开源的集成开发环境(IDE)。它支持多种编程语言,并且具有丰富的扩展系统,使得用户可以根据自己的需求自定义和扩展功能。 以下是VS …...

操作系统【OS】微内核
基本概念 微内核结构将操作系统划分为两大部分:微内核多个服务器微内核包含: 与硬件处理紧密相关的部分一些较基本的功能客户和服务器间的通信客户与服务器之间是借助微内核提供的消息传递机制来实现交互的 基本功能 进程管理 进程的通信、切换、调度…...

Ubuntu docker安装mysql
本文介绍如何在docker中安装mysql,之前有尝试过先在docker中安装一个ubuntu到镜像,然后进去再去安装mysql相关的东西,发现不行,这边整理一下一个可行的方式。 在下载镜像的时候,直接下载mysql镜像。 1.搜索镜像 doc…...

VSCode使用记录
一、安装 从官网 https://code.visualstudio.com 下载相应安装包 二、扩展:商店 Chinese (Simplified) (简体中文) Language Pack for Visual Studio CodeLive Serveropen in browserGitLens — Git superchargedRemote - SSHPrettier - Code formatterESLintpxt…...

正则表达式之学习笔记
正则表达式学习笔记 一、概念二、正则表达式组成三、常见的正则表达式3.1 .匹配任意字符3.2 * 匹配前一个字符的0个或多个实例3.3 ^ 匹配输入字符串的开头3.4 $ 匹配行尾3.5 [] 匹配字符集合\<\> 精确匹配符号 一、概念 正则表达式是由一系列特殊字符组成的字符串&#…...

Java String类
字符串转义符号为 \ 常见的转义字符 转移字符对应的英文是 escape character , 转义字符串( Escape Sequence ) 字母前面加上捺斜线 "" 来表示常见的那些不能显示的 ASCII 字符 . 称为转义字符 . 如 \0,\t,\n 等,就称为转 义字…...

我的电子萝卜刀火了吗?
引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 笔者在上一篇文章《萝卜刀真的太危险了,于是我用Cocos做了一个》中说到因女儿从学校回来之后想要我给她买一把萝卜刀被我拒绝,但是又想要让她体验一下,因此用Cocos…...

git 查看本地秘钥
第一步: 1,打开终端或者命令行窗口,输入一下命令: cd ~/.ssh进入ssh目录 2,查看该目录下的所有文件,输入以下命令: ls -al该命令将显示ssh目录下的所有文件,包括秘钥文件和配置文件,如果不存…...

【TensorFlow1.X】系列学习笔记【入门二】
【TensorFlow1.X】系列学习笔记【入门二】 大量经典论文的算法均采用 TF 1.x 实现, 为了阅读方便, 同时加深对实现细节的理解, 需要 TF 1.x 的知识 文章目录 【TensorFlow1.X】系列学习笔记【入门二】前言神经网络的参数神经网络的搭建前向传播反向传播 总结 前言 学习了张量、…...
详解一下HTML的语义化标签
目录 什么是语义化标签: HTML5的语义化元素的优点: HTML5的语义化元素的缺点: 来个例子: 语义化标签有那些: 什么是语义化标签: 语义化标签是HTML的一种特性,其核心目标是让标签具有特定的意义。它们的存在不仅帮助开发者更好地理解文档的结构,也让…...

C++11的for循环
在C03/98中,不同的容器和数组,遍历的方法不尽相同,写法不统一,也不够简洁,而C11基于范围的for循环以统一,简洁的方式来遍历容器和数组,用起来更方便了。 for循环的新用法 #include <iostre…...
代码随想录算法训练营第六十天| 739. 每日温度、 496.下一个更大元素 I
代码随想录算法训练营第六十天| 739. 每日温度、 496.下一个更大元素 I 739. 每日温度496.下一个更大元素 I 今天的题都能看懂,做了一个小时 739. 每日温度 题目链接:739. 每日温度 文章链接 状态:看视频能看懂,还是要多练。 代码…...

13.3测试用例进阶
一.测试对象划分 1.界面测试(参考软件规格说明书和UI视觉稿) a.什么是界面 1)WEB站(浏览器) 2)app 3)小程序 4)公众号 b.测试内容 1)界面内容显示的一致性,完整性,准确性,友好性.比如界面内容对屏幕大小的自适应,换行,内容是否全部清晰展示. 2)验证整个界面布局和排版…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...

LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...