问题

最近在做小程序自动化测试,核心原理是利用小程序自动化库: miniprogram-automator

文档如下:

小程序自动化 / API / Automator

但是最近突然出现问题,执行自动化测试脚本时报错:

    Cannot read property 'getCurrentPagesByDomain' of undefined

      at Transport.Connection.onMessage (node_modules/miniprogram-automator/out/Connection.js:1:1087)
      at WebSocket.<anonymous> (node_modules/miniprogram-automator/out/Transport.js:1:322)
      at WebSocket.onMessage (node_modules/ws/lib/event-target.js:120:16)
      at Receiver.receiverOnMessage (node_modules/ws/lib/websocket.js:789:20)
      at Receiver.dataMessage (node_modules/ws/lib/receiver.js:422:14)
      at Receiver.getData (node_modules/ws/lib/receiver.js:352:17)
      at Receiver.startLoop (node_modules/ws/lib/receiver.js:138:22)
      at Receiver._write (node_modules/ws/lib/receiver.js:74:10)
      at Socket.socketOnData (node_modules/ws/lib/websocket.js:864:35)

困难

翻遍全网没有结果:

找到的连接全部无法打开

就算找到几个还能打开的,也是久久没有人回复。

解决

整整一个下午,尝试了各种方法都没有结果,我甚至让 Gemni 2.5 pro 帮忙逆向了 miniprogram-automator 的代码。

发现核心逻辑其实在微信开发者工具里面,这个库其实只是基于 RPC 通讯将这些功能封装成 Node.js 版本 API 而已。

因此意识到这个错误可能是微信开发者工具引起的,也许是最近工具有升级。

于是检查了一下最近微信开发者工具是否有发布:

稳定版:1.06.2412050

https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html

预发布版:1.06.2503281

https://developers.weixin.qq.com/miniprogram/dev/devtools/rc.html

开发版本:1.06.2504112

https://developers.weixin.qq.com/miniprogram/dev/devtools/nightly.html

好家伙,再一看出问题的版本正是 1.06.2503281 。于是重新下载稳定版本。最终顺利解决问题。

总结

面对微信开发者工具这种黑箱,如果出了问题先不要急着深入挖掘,先检查一遍有没有变更部分。控制变量法永不过时。