关于微信跳一跳游戏辅助笔记

最近新版本的微信小程序游戏跳一跳火爆朋友圈. 而Python3实现的跳一跳游戏辅助程序也是火了一大把. 跳一跳游戏辅助仓库地址: https://github.com/wangshub/wechat_jump_game.

工具介绍

WebDriverAgent(WDA)

WDA仓库地址: https://github.com/facebook/WebDriverAgent

WebDriverAgent 是什么? WebDriverAgent 在 iOS 端实现了一个 WebDriver server ,借助这个 server 我们可以远程控制 iOS 设备。你可以启动、杀死应用,点击、滚动视图,或者确定页面展示是否正确。This makes it a perfect tool for application end-to-end testing or general purpose device automation.(它说它是iOS上一个完美的e2e的自动化解决方案) It works by linking XCTest.framework and calling Apple's API to execute commands directly on a device.(链接XCTest.framework调用苹果的API直接在设备上执行命令) WebDriverAgent is developed and used at Facebook for end-to-end testing and is successfully adopted by Appium. (Appium封装工作正在进行中,如果一旦封装好,那么以后就可以直接用Appium提供的binding了。)It is currently maintained by Marek Cirkos and Mehdi Mulani.

也可以看这里的介绍:

如果安装遇到问题, 可以参考仓库的issue, 百度google都能得到答案.

看这里(WDA安装步骤以及使用教程): https://testerhome.com/topics/7220

看这里(教你理解什么是WDA): https://testerhome.com/topics/4904

WDA支持使用网络代理调试, 也支持使用USB转发设置: USB工具如下所示(附安装步骤): https://github.com/facebook/WebDriverAgent/wiki/USB-support

openatx/facebook-wda

仓库地址: https://github.com/openatx/facebook-wda

简介详见README. 它是一个WebDriverAgent的Python3版本的封装. 提供了很多WDA的Python版本调用, 通过这个工具, 我们可以直接用python来写自动化测试代码. 比如打开一个app, 填写用户名密码, 自动化登录, 做一定的操作. 点击, 长按, 滚动视图, 杀死程序都可以通过py代码直接控制.

跳一跳辅助使用步骤

安装完上述的工具, 按照辅助程序中提供的方法即可成功实现自动化玩跳一跳小程序.

  1. 运行安装好的 WebDriverAgentRunner
  2. 将手机点击到《跳一跳》小程序界面
  3. 运行脚本。有两种模式可供选择:手动辅助跳 和 自动连续跳
    • 手动辅助跳
      • 命令行运行python3 wechat_jump_iOS_py3.py
      • 依次点击弹出的窗口中的起始位置和目标位置,会自动计算距离后起跳
      • 根据起跳的精准情况更改python3 wechat_jump_iOS_py3.py中的time_coefficient参数,直到获得最佳取值
    • 自动连续跳
      • 拷贝./config/iPhone目录下对应的设备配置文件,重命名并替换到./config.json
      • 命令行运行python3 wechat_jump_auto_iOS.py
      • 会自动计算坐标并连续起跳,根据起跳的精准情况更改./config.json 中的press_coefficient参数,直到获得最佳取值

辅助程序实现原理

# === 思路 ===
# 核心:每次落稳之后截图,根据截图算出棋子的坐标和下一个块顶面的中点坐标,
#      根据两个点的距离乘以一个时间系数获得长按的时间
# 识别棋子:靠棋子的颜色来识别位置,通过截图发现最下面一行大概是一条直线,就从上往下一行一行遍历,
#         比较颜色(颜色用了一个区间来比较)找到最下面的那一行的所有点,然后求个中点,
#         求好之后再让 Y 轴坐标减小棋子底盘的一半高度从而得到中心点的坐标
# 识别棋盘:靠底色和方块的色差来做,从分数之下的位置开始,一行一行扫描,由于圆形的块最顶上是一条线,
#          方形的上面大概是一个点,所以就用类似识别棋子的做法多识别了几个点求中点,
#          这时候得到了块中点的 X 轴坐标,这时候假设现在棋子在当前块的中心,
#          根据一个通过截图获取的固定的角度来推出中点的 Y 坐标
# 最后:根据两点的坐标算距离乘以系数来获取长按时间(似乎可以直接用 X 轴距离)

作为一个Python新手, 通过试玩这个辅助工具还是get到不少东西的, 加油!

相关文章
相关标签/搜索