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

2023-11-14

目录

前言:

微信小程序结构

自动化用例的调整

示例代码

后记


前言:

微信小程序是一种流行的移动应用程序,它在移动设备上提供了丰富的功能和用户体验。为了确保微信小程序的质量和稳定性,自动化测试是必不可少的一环。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='发现']").click
  driver.findElementByXPath("//*[@text='小程序']").click
  driver.findElementByXPath("//*[contains(@text, '美团外卖')]").click
  println(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 进行微信小程序的自动化测试的例子.

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

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

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

相信能使你更好的进步!

点击下方小卡片

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 关于前端获取后端传输的参数并在js中应用该参数

    在进行dynamicTree名称获取时 如果是涉及到不同数据库需要使用不同的dynamicTree的xml文件且该名称在前端写死状态 可以采用setAttribute方法将值赋给前端 前端用 接收该值 并在js处使用document get
  • TCP UDP协议的应用以及高级IO的介绍

    TCP UDP协议的应用以及高级IO的介绍 网络通信协议 模型 TCP和UDP两个协议都是一对多的网络通信模型 TCP编程模型 UDP编程模型 实例 TCP模型 聊天室的服务器 有私密消息功能以及列出聊天者的功能 include
  • RCE远程命令执行漏洞挖掘思路

    RCE漏洞可能出现在哪些地方 1 URL上 在url参数上 不仅仅可能存在ssrf漏洞 也有很大概率存在命令执行 很大可能调用系统命令如curl payload例子 index php id 2 phpinfo ttp www xxx co
  • ue4编辑模型时,让模型底部刚好在地面上的方法

    选中模型按住End键
  • Matlab 公式大全

    1 MATLAB公式 例如 在命令窗口中输入sin pi 5 然后单击回车键 则会得到该表达式的值 sin pi 5 ans 0 5878 例如 sin 1 9 pi sin 2 9 pi sin 3 9 pi sin 4 9 pi sin
  • linux软件共用的依赖关系,利用 yum 解决 Linux 软件包的依赖关系

    在Linux系统软件安装包依赖关系是一个很烦恼的问题 yum能够从指定的服务器自动下载RPM包并且安装 可以自动处理依赖性关系 并且一次安装所有依赖的软体包 无须繁琐地一次次下载 安装 可以利用ftp和Createrepo共同搭建本地软件库
  • C语言结构体中定义函数指针详解

    C语言结构体中定义函数指针详解 结构体指针函数应用场景之一 驱动程序编写 结构体的一些基本用法 形式 先定义结构体类型 再定义变量 形式 在定义类型的同时定义变量 形式 直接定义变量 用无名结构体直接定义变量只能一次 结构体指针在嵌入式Li
  • canvas绘制线条、矩形、曲线及填充

    1 绘制线条和填充 1 绘制线段的API是上下文对象的方法 2 beginPath 开始定义一条新的路径 3 moveTo 开始定义一条新的子路径 该方法确定了线段的起点 4 lineTo 将上面定义的线段起点和指定的新的点连接起来 5 到
  • Vue+element ui -- 自定义表单验证:金额

    在实际项目中 表单验证可以说非常普遍 尤其是财务系统项目和商城项目 涉及到金额的输入框更是很多 那么验证用户输入信息的争取与否 就变得至关重要 不单要做到准确还要照顾用户的输入习惯以及舒适度 这边笔记记录了原来我在项目中进行 金额 方面的自
  • xp系统电脑服务器端口,XP的电脑用CMD指令怎么开3389端口

    输入命令 REG ADD HKLM SYSTEM CurrentControlSet Control Terminal Server v fDenyTSConnections t REG DWORD d 00000000 f 如果用CMD命
  • MATLAB与深度学习(一)— Deep Learning Toolbox

    MATLAB与深度学习 一 Deep Learning Toolbox 最近 我在学习基于matlab的深度学习的内容 并整理出如下学习笔记 本文借鉴和引用了网上许多前辈的经验和代码 如有冒犯 请及时与我联系 1 MATLAB与深度学习的简
  • 使用ImageMagick为你的网站减重(转)

    片在网站所占的比重越来越重 更好的优化图片可以提高网站速度 减少宽带流量 1 对用户上传图片进行缩放 对于用户自己上传的图片不能简单的 用css限制大小 因为这样每次加载图片时候还是会加载整幅大图 占用多余的宽带 并且影响页面加载速度 应该
  • 安装程序无法自动安装Virtual Machine Communication Interface Sockets(VSock)驱动程序

    关于 VMware Tools安装时出现的问题的解决办法 安装时出现问题对话框 安装程序无法自动安装Virtual Machine Communication Interface Sockets VSock 驱动程序 必须手动安装此驱动程序
  • 动态场景下基于实例分割的SLAM(毕业设计开题及语义分割部分)

    动态场景下基于实例分割的SLAM 毕业论文设计思路及流水 前言 今年选了个比较难的毕设题目 这里记录一下自己思路和流程 为之后的学弟学妹 划掉 铺个方向 会按日期不定期的更新 一 开题 2019 12 24 考研前选择课题是 利用深度学习对
  • Linux ixgbe网卡(光模块)兼容性问题(没有网卡配置文件)

    Linux ixgbe网卡 光模块 兼容性问题 ixgbe光纤网卡的驱动在默认情况下不支持第三方兼容光模块 会导致网卡驱动加载失败 表现为 执行lspci grep 82599能看到网卡在pci设备中 06 00 0 Ethernet co
  • 剑指 Offer 15. 二进制中1的个数

    public class Solution you need to treat n as an unsigned value public int hammingWeight int n int div 1 int num 0 for in
  • 李宏毅 机器学习 2016 秋:3、Gradient Descent

    文章目录 三 Gradient Descent 3 1 Tuning your learning rates 3 2 Stochastic Gradient Descent 3 3 Feature Scaling 3 4 理论支持 三 Gr
  • 免费html5代码,HTML5(示例代码)

    一 什么是HTML5 1 1 HTML5 简介 万维网的核心语言 标准通用标记语言下的一个应用超文本标记语言 HTML 的第五次重大修改 作为新HTML语言 具有新的元素 属性和行为 XHTML可扩展超文本标记语言 是一种增强了的HTML
  • 微信小程序:动画效果集合

    Life is like riding a bicycle To keep your balance you must keep moving 生活就像骑自行车 为了保持平衡 你必须不断前进 微信小程序 心跳动画 https blog cs
  • 使用 appium 进行微信小程序的自动化测试

    目录 前言 微信小程序结构 自动化用例的调整 示例代码 后记 前言 微信小程序是一种流行的移动应用程序 它在移动设备上提供了丰富的功能和用户体验 为了确保微信小程序的质量和稳定性 自动化测试是必不可少的一环 Appium是一个强大的自动化测