MiniProgram

MiniProgram 模块提供了控制小程序的方法。

方法

miniProgram.pageStack

获取小程序页面堆栈。

  1. miniProgram.pageStack(): Promise<Page[]>

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const pageStack = await miniProgram.pageStack()
  3. console.log(pageStack.length) // 当前页面栈数量
  4. })

miniProgram.navigateTo

保留当前页面,跳转到应用内的某个页面,同 wx.navigateTo

  1. miniProgram.navigateTo(url: string): Promise<Page>

参数说明

字段类型必填默认值说明
urlstring-需要跳转的应用内非 tabBar 的页面的路径

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const page = await miniProgram.navigateTo('/page/component/index')
  3. console.log(page.path) // -> 'page/component/index'
  4. })

miniProgram.redirectTo

关闭当前页面,跳转到应用内的某个页面,同 wx.redirectTo

  1. miniProgram.redirectTo(url: string): Promise<Page>

参数说明

字段类型必填默认值说明
urlstring-需要跳转的应用内非 tabBar 的页面的路径

miniProgram.navigateBack

关闭当前页面,返回上一页面或多级页面,同 wx.navigateBack

  1. miniProgram.navigateBack(): Promise<Page>

miniProgram.reLaunch

关闭所有页面,打开到应用内的某个页面,同 wx.reLaunch

  1. miniProgram.reLaunch(url: string): Promise<Page>

参数说明

字段类型必填默认值说明
urlstring-需要跳转的应用内页面路径

miniProgram.switchTab

跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面,同 wx.switchTab

  1. miniProgram.switchTab(url: string): Promise<Page>

参数说明

字段类型必填默认值说明
urlstring-需要跳转的 tabBar 页面的路径

miniProgram.currentPage

获取当前页面。

  1. miniProgram.currentPage(): Promise<Page>

miniProgram.systemInfo

获取系统信息,同 wx.getSystemInfo

  1. miniProgram.systemInfo(): Promise<Object>

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. const systemInfo = await miniProgram.systemInfo()
  3. if (systemInfo.platform === 'devtools') {
  4. // Do something
  5. }
  6. })

miniProgram.callWxMethod

调用 wx 对象上的指定方法。

  1. miniProgram.callWxMethod(method: string, ...args: any[]): Promise<any>

参数说明

字段类型必填默认值说明
methodstring-需要调用的方法名
…argsarray<any>-方法参数

调用异步方法时无需传入 success 及 fail 回调函数。

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. await miniProgram.callWxMethod('setStorage', {
  3. key: 'test',
  4. data: 'test'
  5. })
  6. const { data } = await miniProgram.callWxMethod('getStorageSync', 'test')
  7. console.log(data) // -> 'test'
  8. })

miniProgram.mockWxMethod

覆盖 wx 对象上指定方法的调用结果。

  1. miniProgram.mockWxMethod(method: string, result: any): Promise<void>

参数说明

字段类型必填默认值说明
methodstring-需要覆盖的方法名
resultany-指定调用结果

利用该接口,你可以很方便地直接指定 wx.chooseLocation 等调用系统组件的返回结果。

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. await miniProgram.mockWxMethod('showModal', {
  3. confirm: true,
  4. cancel: false
  5. })
  6. })

miniProgram.restoreWxMethod

重置 wx 指定方法,消除 mockWxMethod 调用的影响。

  1. miniProgram.restoreWxMethod(method: string): Promise<void>

参数说明

字段类型必填默认值说明
methodstring-需要覆盖的方法名

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. console.log(await miniProgram.callWxMethod('getStorageSync', 'test')) // -> ''
  3. await miniProgram.mockWxMethod('getStorageSync', 'mockValue')
  4. console.log(await miniProgram.callWxMethod('getStorageSync', 'test')) // -> 'mockValue'
  5. await miniProgram.restoreWxMethod('getStorageSync')
  6. console.log(await miniProgram.callWxMethod('getStorageSync', 'test')) // -> ''
  7. })

miniProgram.evaluate

往 AppService 注入代码片段并返回执行结果。

  1. miniProgram.evaluate(appFunction: Function | string, ...args: any[]): Promise<any>

参数说明

字段类型必填默认值说明
appFunctionFunction string-代码片段
…argsarray<any>-执行时传入参数

appFunction 最终会被序列化传递到开发者工具,因此你无法在函数中利用闭包来引用外部变量。也就是说,传递 function () {} 函数事实上等同于传递其字符串。

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. let systemInfo = await miniProgram.evaluate(() => {
  3. return new Promise(resolve => {
  4. wx.getSystemInfo({
  5. success(result) {
  6. resolve(result)
  7. }
  8. })
  9. })
  10. })
  11. systemInfo = await miniProgram.evaluate(() => {
  12. return wx.getSystemInfoSync()
  13. })
  14. console.log(systemInfo)
  15. await miniProgram.evaluate(key => {
  16. wx.setStorageSync(key, 'test')
  17. }, 'test')
  18. const hasLogin = await miniProgram.evaluate(() => getApp().globalData.hasLogin)
  19. console.log(hasLogin)
  20. })

miniProgram.pageScrollTo

将页面滚动到目标位置,同 wx.pageScrollTo

  1. miniProgram.pageScrollTo(scrollTop: number): Promise<void>

参数说明

字段类型必填默认值说明
scrollTopnumber-滚动到页面的目标位置,单位 px

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. await miniProgram.pageScrollTo(50)
  3. })

miniProgram.exposeFunction

在 AppService 全局暴露方法,供小程序侧调用测试脚本中的方法。

  1. miniProgram.exposeFunction(name: string, bindingFunction: Function): Promise<void>

参数说明

字段类型必填默认值说明
namestring-全局方法名
bindingFunctionFunction-脚本方法

你可以利用该方法来监听事件,不支持在小程序侧获取调用结果。

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. await miniProgram.exposeFunction('onAppShow', options => {
  3. // Do something...
  4. })
  5. await miniProgram.evaluate(function() {
  6. wx.onAppShow(function(options) {
  7. onAppShow(options)
  8. })
  9. })
  10. })

miniProgram.remote

开启工具真机调试功能。

  1. miniPromise.remote(auto?: boolean): Promise<void>

参数说明

字段类型必填默认值说明
autobooleanfalse是否自动真机调试

调用后脚本会启动工具真机调试功能,并且在控制台上打印二维码,然后你需要使用真机扫码连接使自动化脚本继续跑下去。

auto 为 true 时,真机上会自动调起小程序,无需扫码,仅支持微信 7.0.6(安卓)、6.6.7(iOS)及以上版本。有关真机自动化相关内容,请点此查看。

  1. automator.launch().then(async miniProgram => {
  2. await miniProgram.remote()
  3. // 扫码连接成功后在真机上执行自动化脚本
  4. })

miniProgram.disconnect

断开与小程序运行时的连接。

  1. miniProgram.disconnect(): void

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. miniProgram.disconnect()
  3. })

miniProgram.close

断开与小程序运行时的连接并关闭项目窗口。

  1. miniProgram.close(): Promise<void>

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. await miniProgram.close()
  3. })

事件

console

日志打印时触发。

传递一个 msg 参数,其字段如下:

字段类型说明
typestring日志类型,log、info 等
argsarray<any>日志内容

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. miniProgram.on('console', msg => {
  3. console.log(msg.type, msg.args)
  4. })
  5. })

exception

页面 JS 出错时触发。

传递一个 error 参数,其字段如下:

字段类型说明
messagestring错误信息
stackstring错误堆栈

示例代码:

  1. automator.launch().then(async miniProgram => {
  2. miniProgram.on('exception', err => {
  3. console.log(err.message, err.stack)
  4. })
  5. })