微信小程序自动化测试框架 Minium —— 原生控件弹窗处理(一)

前文 微信小程序自动化测试框架 Minium —— 测试进阶 主要介绍使用 Minium 框架测试计划的配置及执行、真机调试。

原生控件弹窗是小程序中常见的功能,一般是由小程序API或小程序Page事件接口引起的(如授权弹窗、弹窗、地图、转发小程序等)。

原生控件弹出处理系列文章主要介绍如何使用Minium框架自动点击各类弹窗操作

Minium支持在开发者工具和真机上多端执行自动化脚本,处理弹窗的方式基本方式都是调用Native接口实现,但是在不同端运行时略有不同:

  • 真机运行:用例脚本可直接调用Native实例接口处理
  • 开发者工具运行:工具上运行时无法直接处理弹窗,需要先在 config.json 配置 mock_native_modal,然后用例脚本调用Native实例接口,原理是对弹窗预先进行了Mock处理

具体来说,目前小程序中主要的原生控件弹窗主要有:

  • 模态弹框(wx.showModal)
  • 用户信息授权弹窗(wx.getUserProfile)
  • 显示操作菜单弹窗(wx.showActionSheet)
  • 地理位置授权弹窗(wx.getLocation)
  • 地图选择(wx.chooseLocation)
  • 订阅信息授权弹窗(wx.requestSubscribeMessage)
  • 转发小程序弹窗(Page.onShareAppMessage 事件接口)

本文主要介绍如何处理模态弹框、用户信息授权弹窗、显示操作菜单弹窗。
后续原生控件弹窗处理文章(二),主要介绍如何处理地理位置授权弹窗、地图选择、订阅信息授权弹窗
原生控件弹窗处理文章(三),主要介绍如何处理转发小程序弹窗

其中小程序demo可参考 miniprogram-demo

模态对话框(wx.showModal)

模态对话框由 wx.showModal 引起的弹框,例如小程序JS代码

testModal() { 
    wx.showModal({
      title: "test modal",
      content: "modal content",
      success(res) {console.log("modal success", res)},
    })
  },
处理方式

调用minium框架的Native实例中的 handle_modal() 接口。关键代码如下,完整的示例可参考 minitest-demo中 test_handle_modal 用例

	# 点击触发弹窗按钮
    self.page.get_element("#testModal").tap()
    time.sleep(2)
    # 点击弹窗 确定
    self.native.handle_modal("确定")

注意:IDE平台运行config.json 需配置 mock_native_modal,示例如下:

{
  "project_path":"xxxx",
  "dev_tool_path":"xxxx",
  "platform": "ide",
  "mock_native_modal": {
      "showModal": {
          "title": "test modal",
          "content": "modal content"
      }
  }
}
运行结果

运行脚本结果如下:

在这里插入图片描述

用户信息授权弹窗(wx.getUserProfile)

用户信息授权弹窗由 wx.getUserProfile 引起的弹窗,例如小程序JS代码

getUserProfile() {
    wx.getUserProfile({
      desc: "我要拿你的信息", 
      complete(res){console.log(res)} 
    })
  },
处理方式

调用minium框架的Native实例中的 allow_get_user_info() 接口 或者 allow_authorize() 接口。关键代码如下,完整的示例可参考 minitest-demo中 test_allow_get_user_info 用例

	# 点击触发弹窗按钮
    self.page.get_element("#`getUserProfile`").tap()
    time.sleep(2)
    # 点击弹窗
    self.native.allow_get_user_info()

注意,IDE平台运行config.json 需配置 mock_native_modal,示例如下:

{
  "project_path":"xxxx",
  "dev_tool_path":"xxx",
  "platform": "ide",
   "mock_native_modal": {
        "userInfo": {
            "nickName": "mini_test",
            "gender": 0,
            "language": "zh_CN",
            "city": "",
            "province": "",
            "country": "",
            "avatarUrl": ""
        }
    }

}
运行结果

运行用例结果如下:

在这里插入图片描述

显示操作菜单弹窗(wx.showActionSheet)

显示操作菜单弹窗由 wx.showActionSheet 引起的弹窗,例如小程序JS代码

testActionSheet() {
    wx.showActionSheet({
      itemList: ['A', "测试", "C"],
      success(res) {
        console.log(res)
      },
      fail(err) {
        console.error(err)
      }
    })
  },
处理方式

调用minium框架的Native实例中的 handle_action_sheet() 接口。关键代码如下,完整的示例可参考 minitest-demo中 test_handle_action_sheet 用例

	self.page.get_element("#testActionSheet").tap()  # 触发选择器
    time.sleep(1)
    self.native.handle_action_sheet(item)  # 选择{item}

若是IDE平台运行config.json 需配置 mock_native_modal,示例如下:

{
  "project_path":"xxxx",
  "dev_tool_path":"xxxx",
  "platform": "ide",
  "mock_native_modal": {
        "showActionSheet": {
        }
    }
}
运行结果

运行用例结果如下:

在这里插入图片描述

云测执行

以上处理弹窗用例可直接在云测服务上执行,将用例上传至云测,新建测试计划,新建测试任务,选择测试计划并执行。详细教程可参考 自定义测试
云测服务提供详细的测试报告,包括运行截图、日志信息,网络请求分析,性能分析等

云测服务仅支持真机测试,可选择多平台真机,支持多平台同时运行,无需配置 config.json,无需部署和维护真机环境

需要帮助

注意: IDE运行及真机调试初始化失败,可参考 前文 微信小程序自动化测试框架 Minium —— 测试进阶 的常见问题,或参考官方文档 FAQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值