使用 appium 进行微信小程序的自动化测试

目录

前言:

微信小程序结构

自动化用例的调整

示例代码

后记


前言:

微信小程序是一种流行的移动应用程序,它在移动设备上提供了丰富的功能和用户体验。为了确保微信小程序的质量和稳定性,自动化测试是必不可少的一环。Appium是一个强大的自动化测试工具,可以用于测试微信小程序。

微信小程序结构

其实微信小程序不过是正常的 webview 而已. 只是产品概念上的不同. 本质还是 h5.
所以用 appium 是可以进行自动化的.

以我们美团外卖为例. 查看结构就可以看到小程序的 dom 结构.

欢迎大家使用美团外卖小程序 (此处应有广告词)

自动化用例的调整

  • webview 的进程名是 com.tencent.mm:appbrand1
  • webview 的 element 需要通过 devtool 等工具进行分析

示例代码

简单写个 demo 给大家. 我本地是测试通过的. 代码是 scala. 大家自行用自己的语言去实现吧.
关键就是那句

val options = new ChromeOptions()
options.setExperimentalOption("androidProcess", "com.tencent.mm:appbrand1")
capability.setCapability(ChromeOptions.CAPABILITY, options)

测试用例代码

test("测试微信小程序") {val capability = new DesiredCapabilities()capability.setCapability("app", "")capability.setCapability("appPackage", "com.tencent.mm")capability.setCapability("appActivity", ".ui.LauncherUI")capability.setCapability("deviceName", "emulator-5554")capability.setCapability("fastReset", "false")capability.setCapability("fullReset", "false")capability.setCapability("noReset", "true")capability.setCapability("automationName", "appium")capability.setCapability("platformName", "android")val options = new ChromeOptions()options.setExperimentalOption("androidProcess", "com.tencent.mm:appbrand1")capability.setCapability(ChromeOptions.CAPABILITY, options)val url = "http://127.0.0.1:4723/wd/hub"val driver = new AndroidDriver[WebElement](new URL(url), capability)driver.findElementByXPath("//*[@text='发现']").clickdriver.findElementByXPath("//*[@text='小程序']").clickdriver.findElementByXPath("//*[contains(@text, '美团外卖')]").clickprintln(driver.getContextHandles)driver.context("WEBVIEW_com.tencent.mm:tools")Thread.sleep(5000)println(driver.getPageSource)driver.findElementByXPath("//*[contains(@url, '美食')]").click()driver.findElementByXPath("//*[contains(., '金百万')]").click()
}

后记

这是行业第一篇用 appium 进行微信小程序的自动化测试的例子.

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(软件测试相关资料,自动化测试相关资料,技术问题答疑等等)

相信能使你更好的进步!

点击下方小卡片

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HarmonyOS】Stage模型二维码/条码生成与解析

HarmonyOS的官方API中提供了QRCode组件(QRCode-基础组件-组件参考(基于ArkTS的声明式开发范式)-ArkTS API参考-HarmonyOS应用开发),这个组件有个缺点只能用于显示二维码,无法显示条码与解析码内容&#xff…

【Distributed】分布式Ceph存储系统之相关应用

文章目录 一、创建 CephFS 文件系统 MDS 接口1. 服务端操作1.1 在管理节点创建 mds 服务1.2 查看各个节点的 mds 服务1.3 创建存储池,启用 ceph 文件系统1.4 查看mds状态1.5 创建用户 2. 客户端操作2.1 客户端要在 public 网络内2.2 在客户端创建工作目录2.3 在 cep…

xml.etree.ElementTree

python使用 xml.etree.ElementTree包的时候,对xml中的空标签进行了简写,想恢复成正常模式怎么弄

视频配音乐怎么制作?教你简单好用的配乐方法

在很多情况下,为视频配乐可以增强观众的情感体验,使观众更加投入到视频内容中。配乐可以增强视频的节奏和情感共鸣,使观众更容易理解和接受视频的信息。此外,配乐还可以为视频添加品味和风格,使其更具吸引力。教大家几…

基于Nginx的web集群项目

目录 nginx介绍代理集群 安装配置文件http 使用master和worker升级问题 基于域名的虚拟主机隐藏nginx的版本信息供别人下载的网站统计的信息的页面pv介绍 ngixn续nginx认证nginx的allow和denynginx限制并发数nginx限速限速的算法 nginx 限制请求数nginx 的 locationnginx 的 lo…

图片速览 Deep k-Means: Jointly clustering with k-Means and learning representations

本文探讨了联合聚类与学习的问题 交涉。正如之前的几项研究表明,学习 既忠实于要聚类和调整的数据的表示形式 到聚类算法可以导致更好的聚类性能,所有的 更重要的是,这两项任务是联合执行的。我们在这里提出这样一个 方法的k-基于连续重新参数…

阿里云使用SMC进行服务器迁移

操作文档 阿里云SMC适用于所有的可以公网访问的主机 1、资源准备 1、我们必须要要有相关AliyunSMCFullAccess的权限,如果操作RAM账号具有足够的权限可以自动授权 2、我们的源主机要可以公网访问,并且可以ssh且密码登录 2、在控制台点击迁移源 配置我们源…

机器学习 day28(模型评估)

为什么需要模型评估 我们可以借助图像来判断模型是否良好。但当我们用单一特征来绘制f(x)图像时,模型容易出现过拟合现象。但如果增加一些输入特征的种类,绘制图像又会变得很困难。而模型评估可以解决这一痛点。 模型评估 通常我们将数据集的一大半…

JavaWeb(6)——前端工程化(AJAX 和VUE入门)

一、AJAX快速入门 而原生的Ajax请求的代码编写起来还是比较繁琐的,所以接下来我们学习一门更加简单的发送Ajax 请求的技术Axios 。Axios是对原生的AJAX进行封装,简化书写。 Axios官网是:起步 | Axios 中文文档 | Axios 中文网 (axios-http.c…

[极客大挑战 2019]PHP(反序列化)

介绍说明&#xff0c;有备份的习惯&#xff0c;找常见的备份文件后缀名 使用dirsearch进行扫描 dirsearch -u http://f64378a5-a3e0-4dbb-83a3-990bb9e19901.node4.buuoj.cn:81/ -e php-e 指定网站语言 扫描出现&#xff0c;www.zip文件 查看index.php <?php include c…

力扣C++|一题多解之数学题专场(1)

目录 7. 整数反转 9. 回文数 12. 整数转罗马数字 13. 罗马数字转整数 29. 两数相除 7. 整数反转 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。 -如果反转后整数超过 32 位的有符号整数的范围 [2^31, 2^31 -1] &#xff0c;就返回 0。…

智慧体育:冰壶比赛数字孪生

本篇文章将介绍如何使用物理引擎和图扑 3D 可视化技术来呈现冰壶运动的模拟。 Oimo.js 物理引擎 Oimo.js 是一个轻量级的物理引擎&#xff0c;它使用 JavaScript 语言编写&#xff0c;并且基于 OimoPhysics 引擎进行了改进和优化。Oimo.js 核心库只有 150K &#xff0c;专门用…