使用 Airtest 进行微信小程序自动化测试 (Android & iOS)

本文详述如何使用Airtest进行微信小程序的自动化测试,包括在Android和iOS上的步骤,涉及连接设备、使用Poco录制操作、处理UI结构等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Airtest进行Android与iOS的微信小程序自动化测试

1. 简介

随着微信小程序的逐渐普及,针对微信小程序的测试需求也逐渐丰富起来了。现在针对小程序的自动化测试手段比较不完善,针对的平台比较具现化。

本文介绍一下使用Airtest测试框架进行微信小程序自动化测试的方法,并分别介绍在Android和iOS下对详细的使用步骤。

2. 需求

这里我们以星巴克的小程序为例

image

我们需要

1.打开关闭小程序
2.查看咖啡信息并试图购买

针对这几个需求,我们使用Airtest对小程序进行测试

3.Airtest简介

Airtest的简要介绍可以看这里

https://www.oschina.net/p/airtest

http://airtest.netease.com/

这次我们使用Airtest-Ide,poco,iOS-Tagent,这几个组件完成我们的任务,这些内容均可以在下面找到

https://github.com/AirtestProject

4.开始Android测试

这里使用系统WebView内核:

使用微信聊天框输入此网址打开

http://debugtbs.qq.com/

或者扫描二维码

选择强制使用系统内核,然后重启微信即可:

注意: Android版本的小程序的 使用的 腾讯TBS浏览器内核 暂时无法使用 我们的工具来访问界面元素

现在我们可以使用系统内核进行工作!

不过我们即将有新的解决方案来支持TBS内核,敬请期待。

<think>我们正在讨论微信小程序自动化测试脚本编写。根据引用[1]和[2],微信官方提供了Minium框架,但第三方框架如Airtest也可以使用。然而,目前市面上并没有足够稳定好用的工具。因此,我们将介绍两种主要方法:使用Minium框架和使用Airtest框架。 ### 方法1: 使用微信官方Minium框架 Minium是微信官方提供的小程序自动化测试框架,支持多种操作系统。它提供了丰富的API来控制小程序。 #### 安装Minium ```bash pip install minium ``` #### 编写测试脚本示例 ```python import minium class TestApp(minium.MiniTest): def test_click_button(self): # 启动小程序 self.app.navigate_to("/pages/index/index") # 通过选择器获取按钮元素并点击 button = self.page.get_element("button", inner_text="点击我") button.click() # 验证点击后的效果,例如检查页面数据 self.page.wait_data_contains({"data": {"clicked": True}}, timeout=10) ``` Minium提供了`MiniTest`基类,可以编写测试用例。它支持页面跳转、元素获取、事件触发等操作[^1]。 ### 方法2: 使用Airtest图像识别框架 Airtest基于图像识别和Poco控件识别,适合对代码侵入要求低的场景。 #### 安装Airtest ```bash pip install airtest ``` #### 编写测试脚本示例 ```python from airtest.core.api import * from airtest.cli.parser import cli_setup # 初始化连接 if not cli_setup(): auto_setup(__file__) # 连接设备(这里以Android为例) connect_device("Android:///") # 启动微信 start_app("com.tencent.mm") # 进入小程序(通过图像识别点击) touch(Template("wechat_icon.png")) # 点击微信底栏“发现”图标 touch(Template("miniprogram_icon.png")) # 点击“小程序”菜单 touch(Template("my_miniprogram.png")) # 点击目标小程序 # 在小程序内操作 touch(Template("button.png")) # 点击按钮 ``` Airtest通过图像识别来定位元素,但稳定性可能受屏幕分辨率等因素影响[^2]。 ### 两种方法的比较 | 特性 | Minium | Airtest | |--------------|--------------------------------|-------------------------| | 原理 | 基于小程序控件树 | 图像识别或Poco控件识别 | | 稳定性 | 较高(直接操作控件) | 中等(受图像变化影响) | | 学习曲线 | 较陡(需了解小程序结构) | 较平缓 | | 支持平台 | 支持Windows、macOS | 跨平台 | | 是否需要源码 | 不需要(但需知道小程序结构) | 不需要 | ### 建议 - 如果追求稳定性和精确控制,推荐使用Minium框架。 - 如果快速上手且测试逻辑简单,可以考虑Airtest§§相关问题§§ 1. Minium框架如何获取小程序页面元素? 2. Airtest如何提高图像识别的稳定性? 3. 除了Minium和Airtest,还有哪些工具可以用于微信小程序自动化测试? 4. 如何验证微信小程序自动化测试的结果?</think>### 微信小程序自动化脚本开发指南 微信小程序自动化测试主要通过两种主流方案实现,以下是具体实现方法和代码示例: #### 方案1: 官方Minium框架(推荐) 微信官方提供的测试框架,可直接操作小程序底层组件,稳定性较好。 ```python import minium class MiniProgramTest(minium.MiniTest): def test_login_flow(self): # 启动小程序 self.app.navigate_to("/pages/login/index") # 获取页面元素并操作 username = self.page.get_element("input[placeholder='用户名']") password = self.page.get_element("input[placeholder='密码']") submit = self.page.get_element("button", inner_text="登录") # 输入凭证并提交 username.input("test_user") password.input("P@ssw0rd") submit.click() # 验证登录结果 self.page.wait_data_contains({"loginStatus": True}, timeout=10) self.assertIn("欢迎页", self.app.current_page().path) ``` **核心能力**: 1. 精确控制页面跳转:`self.app.navigate_to()`[^1] 2. 获取元素状态:`get_element()`支持CSS选择器[^1] 3. 触发事件:`click()`/`input()`等原生操作 4. 注入代码:`self.app.evaluate()`执行AppService脚本[^1] 5. 调用wx接口:`self.app.call_wx_method("request", {...})`[^1] --- #### 方案2: 第三方框架(如Airtest) 基于图像识别的跨平台方案,适合无源码场景: ```python from airtest.core.api import * # 连接设备 connect_device("Android:///") start_app("com.tencent.mm") # 启动微信 # 进入小程序 touch(Template("discover_tab.png")) touch(Template("miniprogram_entry.png")) touch(Template("target_app.png")) # 小程序内操作 touch(Template("login_button.png")) text("test_user", enter=False) # 输入用户名 touch(Template("password_field.png")) text("P@ssw0rd", enter=True) ``` **适用场景**: - 无法获取小程序源码时 - 需要快速验证核心流程 - 跨平台测试需求(iOS/Android)[^2] --- ### 关键实现技巧 1. **元素定位优化**: ```python # Minium高级定位 self.page.get_element("view", inner_text="确定", id_="confirm-btn") ``` 2. **异步操作处理**: ```python # 等待元素出现 self.page.wait_for(".loading", max_timeout=15) ``` 3. **数据验证**: ```python # 检查页面数据 self.assertDictContains({"cartCount": 3}, self.page.data) ``` 4. **异常处理**: ```python try: element.click() except minium.MiniElementNotFound: self.page.scroll_to(position="bottom") element.click() ``` --- ### 方案对比 | 特性 | Minium | 第三方框架 | |--------------|--------------------------------|------------------| | 稳定性 | ⭐⭐⭐⭐ (直接操作控件) | ⭐⭐ (图像识别) | | 学习曲线 | 较陡 | 平缓 | | 需要源码 | 推荐有源码环境 | 不需要 | | 跨平台 | 支持Win/Mac | 全平台支持 | | 元素定位精度 | 像素级精准 | 依赖图像分辨率 | > 建议优先使用Minium进行核心流程测试,结合Airtest进行兼容性验证[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值