当前位置: 首页 > 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)验证整个界面布局和排版…...

番茄小说离线阅读神器:fanqienovel-downloader让你的数字图书馆永不消失

番茄小说离线阅读神器&#xff1a;fanqienovel-downloader让你的数字图书馆永不消失 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾经遇到过这样的情况&#xff1f;深夜追更的小说…...

Docker 27存储卷动态扩容全链路拆解:从libcontainerd调用流程、runc exec-hooks触发机制,到btrfs quota自动生效原理

第一章&#xff1a;Docker 27存储卷动态扩容全景概览Docker 27&#xff08;即 Docker v27.x 系列&#xff09;首次原生支持存储卷&#xff08;Volume&#xff09;的在线动态扩容能力&#xff0c;无需停机、无需迁移数据&#xff0c;显著提升了容器化生产环境的弹性与可靠性。该…...

从脑电波到股票预测:变分模态分解(VMD)在Python里的3个实战应用

从脑电波到股票预测&#xff1a;变分模态分解&#xff08;VMD&#xff09;在Python里的3个实战应用 变分模态分解&#xff08;VMD&#xff09;作为一种自适应信号处理方法&#xff0c;近年来在多个领域展现出强大的交叉应用潜力。不同于传统傅里叶变换或小波分析&#xff0c;VM…...

青龙面板脚本管理进阶:如何安全高效地维护你的多个脚本仓库(以京东为例)

青龙面板多脚本仓库管理实战&#xff1a;从混乱到秩序的进阶指南 在自动化脚本的世界里&#xff0c;青龙面板就像一位不知疲倦的管家&#xff0c;24小时为我们处理各种重复性任务。但当这位管家同时管理着来自不同主人的十几套规则手册时&#xff0c;混乱往往悄然而至——脚本冲…...

从‘猜’到‘懂’:用LIME和SHAP给你的机器学习模型做一次‘可解释性体检’(对比与选型指南)

从‘猜’到‘懂’&#xff1a;用LIME和SHAP给你的机器学习模型做一次‘可解释性体检’&#xff08;对比与选型指南&#xff09; 在医疗诊断中&#xff0c;医生往往需要借助X光、CT等影像学检查来了解患者体内的情况。类似地&#xff0c;当我们面对一个表现优异但内部机制复杂的…...

如何按优先级控制 Flex 容器内子元素的截断顺序

本文详解如何通过 flex-shrink 属性实现多列 Flex 布局中按指定优先级依次截断文本内容&#xff0c;确保次要元素&#xff08;如按钮&#xff09;先收缩至最小宽度&#xff0c;主内容&#xff08;如标签&#xff09;最后才被截断&#xff0c;彻底解决多元素同步压缩导致的 UI 不…...

软件工程中设计模式的最佳实践与应用场景深度分析

软件工程中设计模式的最佳实践与应用场景深度分析 在软件开发过程中&#xff0c;设计模式是解决常见问题的经典方案&#xff0c;它们不仅能提高代码的可维护性和复用性&#xff0c;还能帮助开发团队更高效地协作。随着软件系统复杂度的提升&#xff0c;合理运用设计模式成为工…...

【LaTeX】表格标题与表格间距调整:从基础命令到实战技巧

1. LaTeX表格排版的核心痛点 第一次用LaTeX排表格时&#xff0c;我盯着PDF输出文件皱起了眉头——表格标题几乎要贴到表格内容上&#xff0c;活像被压缩的三明治。这种"亲密无间"的排版在学术论文里特别扎眼&#xff0c;审稿人可能觉得我们连基础排版都不重视。表格标…...

PICO4手势交互开发避坑实录:MRTK3 + PICO SDK 2.3.0 完整配置与手部模型修复指南

PICO4手势交互开发深度实战&#xff1a;MRTK3与PICO SDK 2.3.0全链路问题诊断与优化 当MRTK3遇上PICO4的最新SDK&#xff0c;开发者往往会面临一系列意料之外的兼容性挑战。从手部模型翻转、关节错位到射线方向异常&#xff0c;这些问题不仅影响用户体验&#xff0c;更可能直接…...

egergergeeert参数教学:为什么max_sequence_length超128易引发文本截断

egergergeeert参数教学&#xff1a;为什么max_sequence_length超128易引发文本截断 1. 理解max_sequence_length参数 1.1 参数基本定义 max_sequence_length&#xff08;最大序列长度&#xff09;是文生图模型中控制文本输入长度的关键参数。它决定了模型能够处理的提示词&a…...