2017年12月28日,微信放出了 6.6.1 版本,在微信首页二楼(下拉出现)位置重磅推出了“跳一跳”小程序,瞬间刷爆朋友圈。
在大家忙于游戏的时候,有人独辟蹊径基于 python + WebDriverAgent 实现了通过 PC 远程操控手机“跳一跳”小程序小人自动跳动,将分数刷到了令人发指的地步,悄悄占领朋友圈第一。
目前已经有比较火的几篇文章详细讲如何实现上述操作,但是或多或少存在描述不够详细、参数设置只在某些机型上表现较好的问题。这也造成我在根据这些教程实现过程中踩了几个小坑。本文基于 Macbook + iphone 6s plus 来讲一下如何实现上述过程,也将踩过的坑记录下。
环境准备
安装 python3
下载并点击安装。下载地址:https://www.python.org/downlo...
在终端 terminal 中输入如下命令,查看是否安装 python3 成功。
~ python3 -V
Python 3.6.4
创建 python3 虚拟环境
文档地址:https://docs.python.org/3/tut...
方法如下:
~ python3 -m venv tutorial-env
~ source tutorial-env/bin/activate
(tutorial-env) ➜ ~
安装 pip
安装 python 包管理工具 pip。
文档地址:https://pip.pypa.io/en/latest...
方法如下:
(tutorial-env) ➜ ~ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
(tutorial-env) ➜ ~ python get-pip.py
安装 xcode
通过 appstore 安装
安装 WebDriverAgent
xcode,尽量新版。尽量升级Xcode到最新版,保持iPhone的版本大于9.3。
从github上下载代码
git clone https://github.com/facebook/WebDriverAgent
安装 carthage
brew install carthage
运行初始化脚本
./Scripts/bootstrap.sh
该脚本会使用Carthage下载所有的依赖,使用npm打包响应的js文件
执行完成后,直接双击打开WebDriverAgent.xcodeproj这个文件。
设置证书
设置证书签名,Team 一栏勾选个人账号即可。
接着在TARGETS里面选中WebDriverAgentRunner,用同样的方法设置好证书
重命名WebDriverAgent的BundleID,避免重名。
接着在TARGETS里面选中WebDriverAgentRunner,用同样的方法重命名。
运行和测试
Xcode - Product - Scheme 中选择 WebDriverAgentRunner。
将 iphone 通过数据线连接到 macbook 上。
在 Xcode - Product - Destination 中选择数据线连接的 iphone 。
运行 Xcode - Product - Test
端口转发
~ brew install libimobiledevice
~ iproxy 8100 8100
使用iproxy --help 可以查到更具体的用法。 这时通过访问http://localhost:8100/status确认WDA是否运行成功。
而inspector的地址是http://localhost:8100/inspector, inspector是用来查看UI的图层,方便写测试脚本用的
使用 python 控制 iphone 自动跳一跳
获取 python 跳一跳代码
仓库地址:https://github.com/korbinzhao...
git clone git@github.com:korbinzhao/wechat_jump_game.git
安装 facebook-wda
(tutorial-env) ➜ ~ pip3 install --pre facebook-wda
安装项目依赖
(tutorial-env) ➜ wechat_jump_game git:(master) ✗ pip3 install -r requirements.txt
拷贝 ./config/iPhone 目录下对应的设备配置文件,重命名并替换到 ./config.json
在手机中打开小程序界面,运行 python 脚本
(tutorial-env) ➜ wechat_jump_game git:(master) ✗ python3 wechat_jump_auto_iOS.py
最终效果
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。