微信小程序自动化测试框架 Minium——常见问题之页面加载

本文解决Minium自动化测试中页面加载未完成导致测试失败的问题。介绍了如何检查网络日志以定位问题原因,并提供了优化代码等待时间的方法。

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

前文主要总结了大家在使用 Minium自动化框架 时遇到的常见问题,即安装Minium常见问题,以及使用Minium过程中,包括初始化、运行用例等阶段经常遇到的问题及解决方案。

页面加载未完成是导致Minium用例在真机上跑测失败最常见的原因之一。

主要是因为编写Case一般是在开发者工具(Windows或者Mac机器)上进行。一般来说真机上网速和反应速度会比开发者工具慢很多
如果代码采用 sleep 的方式等待几秒后再进行操作,很可能在开发者工具上等待时间是足够的可以执行成功,但是真机需要更长的等待时间才能加载完成导致用例失败。

下图就是在云测服务真机执行Case时因页面加载未完成导致用例跑测失败的例子

在这里插入图片描述

当遇到因页面加载未完成而导致跑测失败的情况时,可以按照以下方法排查

1. 先查看网络日志,排查页面未加载完成的原因

在云测服务中,先点击网络请求详情,查看网络请求日志,可以关注以下几个方面:

  • 请求状态码是否为 200。一般来说4xx和5xx的状态码,可能是客户端问题或者服务器连接问题。比如可能是需要配置proxy才能访问服务器等原因导致
  • 关注请求耗时情况,看是否是网络问题或网速比较慢
  • 关注返回的Response情况。有些时候网络状态码正常,请求耗时也正常,但是Response返回为空值,而正常情况应该有对应数据,这时候也可能导致页面白屏。此时可以从后台服务器排查下为什么返回为空,或者采用Mock请求的方式,将正确的返回值通过Mock的方式返回

在这里插入图片描述

2. 用例延时代码优化

当发现确实是真机sleep时间不足,导致页面未加载完成时候,建议不使用sleep等待。可根据需求选择以下等待方式:

ret = self.app.wait_for_page("/pages/testpage/testpage")
self.assertTrue(ret, "wait success")
ret = self.app.wait_util(0, 5)  # 5s内, 页面没有任何未完成的异步请求
self.assertTrue(ret, "wait success")
  • wait_for()
    等待直到指定的条件成立, 条件可以是页面元素, 也可以是自定义的函数或者是需要等待的时间(单位秒)
ret = self.page.wait_for(".waitfor", max_timeout=2)
self.assertTrue(ret, "wait success")
keys = ("testwait", "waitkeys.b")
ret = self.page.wait_data_contains(*keys, max_timeout=3)
# 2s后,page.data={testwait: 1, waitkeys: {a: 1, b: false}}
# 4s后 page.data = {}
self.assertTrue(ret, "wait success")

需要帮助

### 微信小程序UI自动化测试实现方法 #### 使用Minium框架进行微信小程序UI自动化测试 为了提高微信小程序的质量和用户体验,可以采用专门设计用于微信小程序自动化测试工具——Minium。该工具允许开发人员编写脚本来模拟用户的交互行为,从而验证应用程序的功能性和稳定性[^2]。 ```python from minitests import MiniProgramTest, PageObject class TestMiniProgram(MiniProgramTest): @classmethod def setup_class(cls): super().setup_class() cls.page = PageObject('index') # 初始化首页对象 def test_login(self): self.page.input_text('.input-username', 'test_user') self.page.click('.login-button') assert self.page.get_element('.welcome-message').text == 'Welcome!' ``` 上述Python代码展示了如何利用`minitests`库中的`MiniProgramTest`类来创建一个简单的登录功能测试案例。这里定义了一个名为`TestMiniProgram`的测试类,在其内部实现了两个主要的方法: - `setup_class`: 类级别的初始化函数,负责启动被测应用实例以及加载所需的页面对象模型(Page Object Model),即PO模式下的页面表示形式。 - `test_login`: 测试用例本身,它执行了一系列操作以完成一次完整的登录流程,并最终断言预期的结果是否正确显示出来。 #### 配置pytest环境支持微信小程序自动化测试 为了让Pytest能够更好地集成到微信小程序项目的持续集成管道当中去,可以通过配置`conftest.py`文件的方式引入必要的插件和支持包。具体做法如下所示[^3]: ```python # conftest.py 文件内容 from pytest_mini import plugins pytest_plugins = ["weixin.mini_program"] # 添加对微信小程序的支持 plugins.configure( project_path="path/to/your/project", # 设置待测试的小程序项目路径 dev_tool_path="/Applications/wechatwebdevtools.app" # 指定本地已安装好的微信开发者工具位置 ) ``` 这段配置使得整个测试套件可以在命令行环境下运行,并且可以直接调用微信开发者工具来进行实际的应用启动与控制工作。 #### 准备工作:获取并设置好微信开发者工具 在开始任何有关微信小程序自动化测试活动之前,确保已经下载并安装了最新版本的官方提供的微信开发者工具。这一步骤至关重要,因为后续所有的调试、编译乃至自动化的执行都离不开这个IDE的支持[^4]。 访问链接[https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html](https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html)即可找到适用于不同平台的操作指南和技术文档资料。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值