当前位置: 首页 > news >正文

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月青少年软件编程&#xff08;C 语言&#xff09; 等级考试试卷&#xff08;八级&#xff09; 第 1 题 最短路径问题 平面上有n个点&#xff08;n<100&#xff09;&#xff0c;每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。 若有连线&#xff0…...

MS17010(永恒之蓝)漏洞实战

曾因苦难多壮志&#xff0c;不教红尘惑坚心。 工具检测 实战过程 使用搜索命令&#xff0c;搜索ms17_010 search ms17_010 搜索网段中主机漏洞 use auxiliary/scanner/smb/smb_ms17_010 照例&#xff0c;show options 看一下配置 设置网段&#xff0c;run运行就行了 使用攻…...

ROS自学笔记十三:VScode的介绍和安装

Visual Studio Code&#xff08;简称VS Code&#xff09;是一款由Microsoft开发的免费、轻量级、开源的集成开发环境&#xff08;IDE&#xff09;。它支持多种编程语言&#xff0c;并且具有丰富的扩展系统&#xff0c;使得用户可以根据自己的需求自定义和扩展功能。 以下是VS …...

操作系统【OS】微内核

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

Ubuntu docker安装mysql

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

VSCode使用记录

一、安装 从官网 https://code.visualstudio.com 下载相应安装包 二、扩展&#xff1a;商店 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 , 转义字符串&#xff08; Escape Sequence &#xff09; 字母前面加上捺斜线 "" 来表示常见的那些不能显示的 ASCII 字符 . 称为转义字符 . 如 \0,\t,\n 等&#xff0c;就称为转 义字…...

我的电子萝卜刀火了吗?

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

git 查看本地秘钥

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

【TensorFlow1.X】系列学习笔记【入门二】

【TensorFlow1.X】系列学习笔记【入门二】 大量经典论文的算法均采用 TF 1.x 实现, 为了阅读方便, 同时加深对实现细节的理解, 需要 TF 1.x 的知识 文章目录 【TensorFlow1.X】系列学习笔记【入门二】前言神经网络的参数神经网络的搭建前向传播反向传播 总结 前言 学习了张量、…...

详解一下HTML的语义化标签

目录 什么是语义化标签: HTML5的语义化元素的优点: HTML5的语义化元素的缺点: 来个例子: 语义化标签有那些: 什么是语义化标签: 语义化标签是HTML的一种特性&#xff0c;其核心目标是让标签具有特定的意义。它们的存在不仅帮助开发者更好地理解文档的结构&#xff0c;也让…...

C++11的for循环

在C03/98中&#xff0c;不同的容器和数组&#xff0c;遍历的方法不尽相同&#xff0c;写法不统一&#xff0c;也不够简洁&#xff0c;而C11基于范围的for循环以统一&#xff0c;简洁的方式来遍历容器和数组&#xff0c;用起来更方便了。 for循环的新用法 #include <iostre…...

代码随想录算法训练营第六十天| 739. 每日温度、 496.下一个更大元素 I

代码随想录算法训练营第六十天| 739. 每日温度、 496.下一个更大元素 I 739. 每日温度496.下一个更大元素 I 今天的题都能看懂&#xff0c;做了一个小时 739. 每日温度 题目链接&#xff1a;739. 每日温度 文章链接 状态&#xff1a;看视频能看懂&#xff0c;还是要多练。 代码…...

2.4_3死锁的处理策略---避免死锁

...

13.3测试用例进阶

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

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...