开源云真机平台-Sonic-H5页面自动化测试

开源云真机平台-Sonic-H5页面自动化测试

一、参考官方文档

切换WebView | Sonic - 开源云真机平台

1、WebView/H5调试

使用网页调试时的教学与注意事项。

#注意事项#

v2.0.0-beta开始,使用网页调试时,需确保:

  1. 已经打开WebView页面
  2. 被测App已经开启WebView的Debug开关。(如果是微信的H5、小程序一类,需确保微信的debugx5已开启)

java

webView.setWebContentsDebuggingEnabled(true);
  1. 如果是手机默认的浏览器,部分浏览器需要打开debug开关。
  2. 本功能需要转发Devtools服务,官方Docker镜像中已内置,所以仅能在Docker部署前后端的情况下使用。本地开发环境使用需自行开启chrome devtools服务并修改ws地址。

安卓#

  1. 前往WebView页面。
  2. 点击【获取webView进程】。
  3. 选择对应的进程,点击【马上调试】。
  4. 完成!你可以像chrome-devtools一样调试啦!

iOS#

iOS网页调试webkit协议接收器在持续维护中,可以前往 这里 了解更多。

  1. 前往系统【设置】。
  2. 在应用列表找到Safari浏览器。
  3. 点击【高级】 -> 【网页检查器】和【远程自动化】,将两个都打开。
  4. 前往WebView页面。
  5. 点击【获取webView进程】。
  6. 选择对应的进程,点击【马上调试】。
  7. 完成!你可以像chrome-devtools一样调试啦!

2、切换WebView

使用切换WebView相关操作注意事项与教学。

#注意事项#

v2.0.0-beta开始,切换WebView时,需确保:

  1. 已经打开WebView页面
  2. 被测App已经开启WebView的Debug开关。(如果是微信的H5、小程序一类,需确保微信的debugx5已开启)

java

webView.setWebContentsDebuggingEnabled(true);
  1. 远控页面的【网页调试】能看到对应WebView

关于ChromeDriver#

v2.0.0-beta开始,Sonic会自动匹配并下载WebView对应Chrome版本的ChromeDriver,能兼容大概80-85%左右的版本。

但是部分旧Chrome版本或M1版本的缺失,可能造成自动下载失败,这时我们需要手动添加chromeDriver文件到Agent的webview目录下。 例:被测WebView的Chrome协议版本为77.0.3865.10,我们需将对应版本的chromeDriver重命名为

Macosx or Linux:

bash

77.0.3865.10_chromedriver

Windows:

bash

77.0.3865.10_chromedriver.exe

查找AndroidProcess#

使用切换WebView页面时,有AndroidProcess可选项,一般默认使用包名对应的process,但是如果WebView放在多进程(例如微信H5),则会切换失败。这时需要我们指定process。

开发提供了AndroidManifest.xml#

如果您的开发提供了 AndroidManifest.xml ,以 org.sonic.test 为例:

xml

<activity 
    android:name=".Hello"
    android:process=":helloworld" />

那么AndroidProcess为 org.sonic.test:helloworld

手动查找#

如果App为第三方App或者开发不能提供AndroidManifest.xml,我们也可以手动查找。以 com.android.browser 为例(将 com.android.browser 替换为您的被测应用包名):

  1. 打开WebView页面
  2. 输入指令

Windows:

bash

adb shell ps | findstr com.android.browser

Macosx or Linux:

bash

adb shell ps | grep com.android.browser

你会获得类似输出

bash

u0_a90         8907    517 2321912 340180 0                   0 S com.android.browser
u0_a90         9252    517 2261048 293056 0                   0 S com.android.browser:swan0
  1. 那么 com.android.browser:swan0 即为 AndroidProcess。如果有多个进程,则需要一一尝试。

切换Handle#

一般地,一个WebView进程只有一个页面,但是也会有多个页面共用的情况,就像我们的浏览器会有多个Tab的场景。这时我们切换WebView之后,默认进入的是第一个Tab窗口,如果不是我们需要测试的窗口,则需要我们切换。

以微信H5为例:

  1. 使用AndroidProcess为 com.tencent.mm:tools(有的微信版本是 com.tencent.mm:appbrand0 )切换WebView。
  2. 这时我们获取页面标题,就会发现默认切换的窗口是微信的【搜一搜】窗口。
  3. 然后我们使用【切换Handle】步骤,输入目标页面的标题。(v2.1.0开始,也可以输入页面的页面地址或Handle数组下标定位目标Handle)
  4. 然后就可以切换到我们的期望页面,可以开始进行UI自动化操作了。

控件操作#

控件定位以及操作都是基于 Selenium 框架进行UI自动化,定位教程与相关知识不再此处详细教学了。

二、实操教学

1、确认被测APP已开启WebView的Debug开关(通常找安卓开发人员确认)

webView.setWebContentsDebuggingEnabled(true);

2、H5界面与安卓常规原生控件自动化测试的区别:

需要先切换WebView,操作路径:

获取进程名的方法:

1)安卓端进行任意H5页面的操作;

2)用以下指令进行探测:

格式:

adb shell ps | findstr 包名

如:

adb shell ps | findstr com.XXX

(如果无效,获取不到数据,请确保已在安卓端进行了任意H5页面的操作。

尝试:adb shell ps | findstr com.android.browser

或者:adb shell ps | findstr browser

获得以下内容:

u0_a112      10511   750 2359308 445880 SyS_epoll_wait      0 S com.XXXXXX:webview
u0_a112      17137   750 2253508 457392 SyS_epoll_wait      0 S com.XXXXXX
u0_a112      17306   750 2150384 455660 SyS_epoll_wait      0 S com.XXXXXX:upload
u0_a112      19224   750 2078528 366160 SyS_epoll_wait      0 S com.XXXXXX:map
u0_a112      20811   750 2132876 389976 SyS_epoll_wait      0 S com.XXXXXX:takeplugin
u0_a112      21091   750 2187772 417244 SyS_epoll_wait      0 S com.XXXXXX:allplugin

com.XXXXXX:webview 就是进程名

3、将浏览器界面获得的web控件xpath属性保存在如下控件中:

4、其他步骤与安卓原生控件操作一致;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

leetcode—图 岛屿数量

岛屿数量 给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设该网…

React16源码: React中的completeUnitOfWork的源码实现

completeUnitOfWork 1 &#xff09;概述 各种不同类型组件的一个更新过程对应的是在执行 performUnitOfWork 里面的 beginWork 阶段它是去向下遍历一棵 fiber 树的一侧的子节点&#xff0c;然后遍历到叶子节点为止&#xff0c;以及 return 自己 child 的这种方式在 performUni…

vConsole 与 Vue中未定义变量而引发的Maximum call stack size exceeded异常问题

一、问题描述 前段时间有个前端小伙伴反馈在打包发布正式环境后调用VantUI的<van-popup>组件显示时&#xff0c;显示空白&#xff0c;并且在控制台看到一个Maximum call stacksize exceeded&#xff08;超出最大调用堆栈大小&#xff09;,而本地开发环境正常&#xff1a…

Redis应用(1)缓存(1.2)------Redis三种缓存问题

三者出现的根本原因是&#xff1a;Redis缓存命中率下降&#xff0c;请求直接打到DB上了。 一、 缓存穿透&#xff1a; 1、定义&#xff1a; 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存永远不会生效&#xff0c;这些请求都会打到数据库。…

编程语言MoonBit新增矩阵函数的语法糖

MoonBit更新 1. 新增矩阵函数的语法糖 新增矩阵函数的语法糖&#xff0c;用于方便地定义局部函数和具有模式匹配的匿名函数&#xff1a; fn init {fn boolean_or { // 带有模式匹配的局部函数true, _ > true_, true > true_, _ > false}fn apply(f, x) {f(x)}le…

第二篇【传奇开心果短博文系列】Python的OpenCV库技术点案例示例:图像处理

传奇开心果短博文系列 系列短博文目录Python的OpenCV库技术点案例示例短博文系列 博文目录一、项目目标二、第一个示例代码三、第二个示例代码四、第三个示例代码五、第四个示例代码六、第五个示例代码七、知识点归纳总结 系列短博文目录 Python的OpenCV库技术点案例示例短博文…

阿里云 SAE 2.0 正式商用:极简易用、百毫秒弹性效率,降本 40%

作者&#xff1a;黛忻 本文主要介绍阿里云 Serverless 应用引擎&#xff08;以下简称 SAE &#xff09;如何帮助企业跨越技术鸿沟&#xff0c;从传统应用架构无感升级到 Serverless 架构&#xff0c;以更高效、更经济的方式进行转型&#xff0c;快速进入云原生快车道&#xff0…

【android】 android 里写jni

目录 &#xff08;1&#xff09; 环境准备 (2) 关联c文件到gradle文件 &#xff08;3&#xff09; 生成了 (4) 书写 &#xff08;5&#xff09; 使用 &#xff08;6&#xff09;业务调用 参考文档 &#xff08;1&#xff09; 环境准备 ndk, cmake (2) 关联c文件到gr…

实战Arthas:常见命令与最佳实践

本文已收录至Github&#xff0c;推荐阅读 &#x1f449; Java随想录 微信公众号&#xff1a;Java随想录 文章目录 前言常用命令类命令getstaticjadretransform 监测排查命令monitorstackthreadtracettwatch JVM命令heapdumpjfrmemorydashboardclassloaderloggerscmbeanprofile…

《移动通信原理与应用》实验一——QPSK调制与解调实验(实验箱)

目录 一、实验目的 二、实验主要内容及原理 2.1、主要内容 2.2、基本原理 三、实验器材 3.1、移动通信原理实验箱&#xff1a; 3.2、实验框图及电路说明 四、实验步骤 五、实验过程原始记录(数据、图表、计算等) 六、实验结果及分析 1、结果分析&#xff1a; 2、思…

docker compose安装milvus

下载对应版本的milvus-standalone-docker-compose.yml wget https://github.com/milvus-io/milvus/releases/download/v2.3.5/milvus-standalone-docker-compose.yml重新命令为docker-compose.yml mv milvus-standalone-docker-compose.yml docker-compose.yml启动milvus doc…

深入理解Linux中的动态库与静态库

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;I Wish My Mind Would Shut Up—Ivoris 0:21━━━━━━️&#x1f49f;──────── 2:04 &#x1f504; ◀️ …

Java基于沙箱环境实现支付宝支付

一、支付宝沙箱环境介绍 沙箱环境是支付宝开放平台为开发者提供的安全低门槛的测试环境&#xff0c;开发者在沙箱环境中调用接口无需具备所需的商业资质&#xff0c;无需绑定和开通产品&#xff0c;同时不会对生产环境中的数据造成任何影响。合理使用沙箱环境&#xff0c;可以…

【深度学习:集中偏差】减少计算机视觉数据集中偏差的 5 种方法

【深度学习&#xff1a;集中偏差】减少计算机视觉数据集中偏差的 5 种方法 有偏差的计算机视觉数据集会导致哪些问题&#xff1f;如何减少计算机视觉数据集中偏差的示例观察并监控带注释样本的类别分布确保数据集代表模型适用的人群明确定义对象分类、标记和注释的流程为标签质…

鸿蒙开发-UI-布局-列表

鸿蒙开发-UI-布局 鸿蒙开发-UI-布局-线性布局 鸿蒙开发-UI-布局-层叠布局 鸿蒙开发-UI-布局-弹性布局 鸿蒙开发-UI-布局-相对布局 鸿蒙开发-UI-布局-格栅布局 文章目录 前言 一、基本概念 二、开发布局 1.布局约束 2.开发布局 三、应用特性 1.列表数据显示 2.列表数据迭代 3.列…

216. 组合总和 III - 力扣(LeetCode)

题目描述 找出所有相加之和为 n 的 k 个数的组合&#xff0c;且满足下列条件&#xff1a; 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该列表不能包含相同的组合两次&#xff0c;组合可以以任何顺序返回。 输入示例 k 3, n 7输出示例 [[1,2,…

云风网(www.niech.cn)个人网站搭建(八)服务器部署接口测试请求

将之前测试的 html 文件中http://127.0.0.1:8090/地址改成云服务器外网地址&#xff0c;同时需要安全组需要开放 8090 端口 接下来根据步骤进行测试 一、注册用户 注册请求成功&#xff0c;接下来查看数据库&#xff0c;数据库表也更新了数据 二、登录账户 账号登录成功&a…

cdn-工作笔记

问题 pc端打开login页面很慢&#xff0c;进入后切换菜单速度很快&#xff0c;但小程序打开速度正常&#xff0c;就接排除了网络和接口的问题 原因 发现是 这个接口影响了 cdn该充钱了 或者 替换一个 解决 这个项目原本用的是Staticfile CDN 想换一个 打开网址BootCDN - B…

数据仓库-相关概念

简介 数据仓库是一个用于集成、存储和管理大量数据的系统。它用于支持企业决策制定过程中的数据分析和报告需求。数据仓库从多个来源收集和整合数据&#xff0c;并将其组织成易于查询和分析的结构。 数据仓库的主要目标是提供高性能的数据访问和分析能力&#xff0c;以便…

Unity - 简单音频视频

“Test_04” 音频 使用AudioTest脚本控制Audio Source组件&#xff0c;在脚本中声明"music"和"se"之后&#xff0c;在unity中需要将音频资源拖拽到对应位置。 AudioTest public class AudioTest : MonoBehaviour {// 声明音频// AudioClippublic AudioC…