干货|app自动化测试之Andriod WebView如何测试

news2024/12/28 18:33:56

Hybrid App(混合模式移动应用)是介于 Web-app、Native-app 之间的 app,本质上是 Native-app 中嵌入 WebView 组件,在 WebView 组件里可以访问 Web App。Hybrid App 在给用户良好交互体验的同时,还具备了 Web App 的跨平台、热更新机制等优势。

Android WebView 在 Android 平台上是一个特殊的 View,用它来展示网页内容。WebView 内部实现是采用渲染引擎来展示 View 的内容,提供网页前进后退、网页放大、缩小、搜索等功能。使用 WebView 进行测试需要开发人员配合打开一个 WebView 的开关。

WebView开关

WebView 是手机应用内嵌的浏览器,在 Android 4.4 之前 WebView 内核采用的是 WebKit,Android 4.4 之后才用的是 Chrome 作为内置浏览器。它是用来加载 HTML 页面的控件。在模拟器(android6.0 版本)中是默认打开 WebView 开关的,可以直接调试和测试 WebView。真机测试时,必须在应用中打开 WebView 调试开关。要启用 WebView 调试,请在 WebView 类上调用静态方法 setWebContentsDebuggingEnabled。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { if (0 != (getApplicationInfo().flags &\ ApplicationInfo.FLAG_DEBUGGABLE)) { WebView.setWebContentsDebuggingEnabled(true); }}

开启这个开关之后,手机端打开被测的 WebView 页面,然后在电脑端 Chrome 浏览器地址栏录入 “chrome://inspect” 将显示设备上的 WebView 列表。

点击想要调试的 WebView 下方的 inspect 链接,就可以查看这个页面的源代码了。通过源代码就可以查看并确定元素定位表达式了。

如果遇到 Chrome 浏览器版本和 Chromedriver 版本不匹配的问题,可以参见:https://ceshiren.com/t/topic/3275

WebView 测试

切换到 WebView 页面,就可以使用 Selenium 操作元素。

driver.switch_to.context 方法可以从原生页面切换到 WebView 页面,示例代码如下:

webview = driver.contexts[-1]driver.switch_to.context(webview)

WebView 案例

雪球案例,打开雪球应用,点击“交易”,点击“A 股开户”进入到开户页,验证页面正确。如下图:

实现的代码片断如下:

def test_webview(self): # 点击交易 self.driver.find_element(MobileBy.XPATH, '//*[@text="交易"]').click() # 打印当前页面有哪些上下文 print(self.driver.contexts) e = self.driver.contexts for context in self.driver.contexts[::-1]: if 'webview' in context.lower(): aim = context break # 切换上下文 self.driver.switch_to.context(aim) # 点击'A股开户' print(self.driver.window_handles) A_locator = (MobileBy.XPATH, '//*[@id="Layout_app_3V4"]/div/div/ul/li[1]/div[2]/h1') WebDriverWait(self.driver, 10).until(expected_conditions.element_to_be_clickable(A_locator))

进入到 APP 后,打开一个包含 H5 的页面,系统默认是 Native 的上下文。如果要操作 H5 上的元素,则需要切换到 WEBVIEW 的上下文。

上面的代码先通过 driver.contexts 找到所有的 contexts(即上下文),循环遍历这个contexts,找到目标的 WEBVIEW,然后切换到这个 WEBVIEW 中,再执行相应的操作。这时就可以使用 Selenium 的定位方式到 H5 页面的元素了。

app自动化测试(Android)Andriod WebView测试就讲完了,大家学会了么?我们下一期为大家讲解微信小程序测试,有兴趣的小伙伴可以关注一下哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144258.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python数学建模问题总结(2)数据可视化Cookbook指南【源自Google可视化团队】

今天跟大家分享一套谷歌数据可视化团队形成的全面的数据可视化指南,涵盖了设计原则、图表分类、图表的选用、样式设计、交互设计、仪表板设计等方面。一、可视化问题不论你是从事数据相关工作,还是业务相关工作,或多或少都会需要用到数据可视…

docker 部署maven服务器用于项目的部署和发布

书接上文 现状: 已经搭建好了maven远程服务器,并将自己的项目从自己的pc部署到maven远程服务器.假设了kie-server集群可以每个node都连接这个远程服务器 要做的: 1.创建kie-server集群的时候设置环境变量. 2.看是否能连上自己搭建的maven服务器.3.如果2 ok 把kie-server需要…

干货|app自动化测试之Appium 原理 与 JsonWP 协议分析

想要使用 Appium 进行测试,那么就一定要先了解Appium的原理。Appium 不仅能够实现移动端的 JSONWP,并且延伸到了 Selenium 的 JSONWP,它能够控制不同移动设备的行为,例如通过会话安装和卸载 APP。Appium 原理图中依赖关系解释&…

MySQL高级 【视图】

目录 1:视图 1.1:介绍 1.2:语法 1.3:检查选项 1.4:视图的更新 1.5:视图作用 1.6:案例 1:视图 1.1:介绍 视图(View)是一种虚拟存在的表。…

一文看懂什么是「低代码」!低代码真的能取代程序员吗?

早在数年前,亚马逊、微软、阿里、腾讯等国内外巨头公司就已纷纷入局“低代码”赛道,而很多人连低代码是什么,究竟有什么用都不太知道。 本文就从概念讲起,结合三个生动的行业案例,一文讲通“什么是低代码”。 文章有…

【强训】Day03

努力经营当下,直至未来明朗! 文章目录一、选择二、编程1. 字符串中找出连续最长的数字串2. 数组中出现次数超过一半的数字答案1. 选择2. 编程普通小孩也要热爱生活! 一、选择 以下代码运行输出的是() public class …

都2023了,为什么选择Nacos,这篇文章让你入门Nacos

👳我亲爱的各位大佬们好😘😘😘 ♨️本篇文章记录的为 Nacos入门 相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬🙉🙉🙉。 ♨️如果文章有什么…

传奇开服一条龙GEE引擎登录器配置教程

1、首先我们打开我们版本文件夹找到登录器文件夹进入找到GEE登录器配置器(MakeGameLogin.exe)打开2、接下来开始填写我们的主列表和备列表,这时候我们要自己创建一个列表,因为登录器自带的列表肯定是读取不了的,我们在…

Speckle核心概念【3D数据引擎】

本节将详细介绍你的3D数据如何发送到 Speckle 并存储在 Speckle 中。 无论你是 Speckle 的新手还是只是需要复习,这都是一个很好的起点! 1、关于Speckle术语 我们尽量使本指南简单明了,删除了技术语言,除非绝对必要。 值得注意的…

页面表格中每行前添加复选框,点击复选框导出本行数据(掉后端接口)

需求如下:html表格中,每行前面添加一个复选框,单机复选框下载/到处本行数据 思路: 页面: 页面首先要添加复选框,然后点击复选框,调用导出方法 同时获取到与它对应的数据库唯一id信息&#xf…

Seata 1.6.0 正式发布,大幅度提升存储性能

作者:Seata 社区 用户登记* * 欢迎已使用用户在此链接登记,便于我们更好的针对业务场景优化: https://github.com/seata/seata/issues/1246 发布概览* * 主要新增特性:支持 oracle 和 pgsql 多主键;支持 seata-ser…

芯片+步进电机档位控制实验

1、系统功能 目的:学习步进电机的控制。 使用设备:步进电机、两位共阴数码管、按键 功能:驱动步进电机以不同转速(4档)转动,并将当前档位用数码管显示 (1)按键 KEY1 作为启动和停止的切换按键;…

【Git】Git概述与安装

1、Git 概述 Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。 Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversio…

SwitchResX for Mac 屏幕分辨率修改工具

前言 SwitchResX V4.12.1 是Mac上一款功能强大的屏幕分辨率修改软件,可以为您提供控制显示器分辨率所需的所有工具。在switchresx帮助下,您可以管理无论是Mac Retina显示器,Cinema Displays还是电视机甚至投影仪的任何分辨率。而且switchres…

C语言-三子棋

文章目录三子棋一、问题描述二、基本流程在写三子棋的代码之前,我们来看看实现这个游戏的逻辑:三、步骤1. 菜单界面2. 创建棋盘3. 棋盘初始化4.打印棋盘(1)简陋棋盘:(2)自己打印棋盘:5.玩家落子6.电脑落子7.判断胜负1) 判定是否和…

CAPL学习之路-测试功能集函数(最终篇,其他的一些函数介绍)

TestSetEcuOffline 断开ECU与总线的连接 这个ecu是仿真ecu,不是真实ecu哦! testcase TCExample() {testSetEcuOffline(Engine); }void MainTest () {TCExample(); }Trace窗口: TestSetEcuOnline 将ECU连接到总线 testGetCurrentCycle 返回测试的当前周期 这里不管怎么试都返…

【目标检测】TOOD:Task-aligned One-stage Object Detection

TOOD:Task-aligned One-stage Object Detection 论文题目:《TOOD:Task-aligned One-stage Object Detection》——任务对齐的单阶段目标检测 论文地址: https://arxiv.org/abs/2108.07755 论文代码: https://github.com/fcjian/TOOD 1、前言…

优秀的 Verilog/FPGA开源项目介绍(三十六)-RISC-V(新增一)

关于RISC-V的二三事risc-v官网❝https://riscv.org/RISC-V(跟我读:“risk----------------five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。这里要明确两个概念:指令集…

基于VC++的3D地形绘制与纹理贴图

前言随着地理信息系统产业的发展,三维产品也在生活中处处吸引着我们的眼球。作为数字城市的核心内容,城市模型的构建成为了目前研究的热点。OpenGL是独立于操作系统和硬件环境的三维图形库,其为实现逼真的三维绘制效果和建立交互的三维场景提…

ES6 课程概述④

文章目录6-1. 对象解构什么是解构在解构中使用默认值非同名属性解构7-2. 共享符号7-3. 知名(公共、具名)符号[回顾]事件循环8-1. 事件和回调函数的缺陷8-2. 异步处理的通用模型8-3. Promise 的基本使用8-4. Promise 的串联8-5. Promise 的其他 api原型成…