ios跳一跳辅助(由跳一跳外挂说起——初识 iOS 自动化测试框架 WebDriverAgent)
ios跳一跳辅助(由跳一跳外挂说起——初识 iOS 自动化测试框架 WebDriverAgent),哪吒游戏网给大家带来详细的ios跳一跳辅助(由跳一跳外挂说起——初识 iOS 自动化测试框架 WebDriverAgent)介绍,大家可以阅读一下,希望这篇ios跳一跳辅助(由跳一跳外挂说起——初识 iOS 自动化测试框架 WebDriverAgent)可以给你带来参考价值。
微信跳一跳最近很火,外挂代练什么的也越来越多。作为一只程序猿,对外挂的原理产生了强烈的好奇心,于是埋头研究了一阶段,注意到了 WebDriverAgent 这套 Facebook 出品的自动化测试框架。
为了让大家产生兴趣,先从跳一跳外挂的实现说起。
homebrew 是 Mac OS 下最优秀的包管理工具,没有之一。
xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
脚本语言 python 用来编写模拟的用户操作。
brew install python3
libimobiledevice 是一个使用原生协议与苹果iOS设备进行通信的库。通过这个库我们的 Mac OS 能够轻松获得 iOS 设备的信息。
brew install --HEAD libimobiledevice
使用方法:
# 查看 iOS 设备日志
idevicesyslog
# 查看链接设备的UDID
idevice_id --list
# 查看设备信息
ideviceinfo
# 获取设备时间
idevicedate
# 获取设备名称
idevicename
# 端口转发
iproxy XXXX YYYY
# 屏幕截图
idevicescreenshot
Carthage 是一款iOS项目依赖管理工具,与 Cocoapods 有着相似的功能,可以帮助你方便的管理三方依赖。它会把三方依赖编译成 framework,以 framework 的形式将三方依赖加入到项目中进行使用和管理。
WebDriverAgent 本身使用了 Carthage 管理项目依赖,因此需要提前安装 Carthage。
brew install carthage
WebDriverAgent 是 Facebook 推出的一款 iOS 移动测试框架,能够支持模拟器以及真机。
WebDriverAgent 在 iOS 端实现了一个 WebDriver server ,借助这个 server 我们可以远程控制 iOS 设备。你可以启动、杀死应用,点击、滚动视图,或者确定页面展示是否正确。
从 github 克隆 WebDriverAgent 的源码。
git clone https://github.com/facebook/WebDriverAgent.git
运行初始化脚本,确保之前已经安装过 Carthage。
cd WebDriverAgent
./Scripts/bootstrap.sh
脚本完成后可以打开工程文件,根据自己的开发者证书对 bundleid、证书等信息做下配置。
运行 WebDriverAgent 相当于在你的目标设备启动了一个服务器,它接收来自 WDA 客户端(一般是你的电脑)的脚本请求并执行,实现启动、杀死应用,点击、滚动视图等操作。
运行 WebDriverAgent 有两种方式,一种是打开 Xcode 运行,一种是使用脚本运行。
菜单栏选择目标设备:

选择目标设备
Scheme 选择 WebDriverAgentRunner:

选择 WebDriverAgentRunner
最后运行 Product -> Test:

运行Product -> Test
一切正常的话ios跳一跳辅助,手机/模拟器上会出现一个无图标的 WebDriverAgent 应用ios跳一跳辅助,启动之后,马上又返回到桌面。这很正常不要奇怪。
此时控制台界面可以看到设备的 IP 地址:

设备的 IP 地址
通过上面给出的 IP地址 和端口,加上/status合成一个url地址。例如 :8100/status,然后浏览器打开。如果出现一串 JSON 输出,说明 WDA 安装成功了。
此时打开 :8100/inspector,可以看到一个酷炫的界面。左边屏幕图像,右边具体的元素信息,用来查看界面都 UI 图层,方便写测试脚本用。

Inspector
# 解锁keychain,以便可以正常的签名应用,
PASSWORD="YourPassword"
security unlock-keychain -p $PASSWORD ~/Library/Keychains/login.keychain
# 获取设备的UDID,用到了之前的 libimobiledevice
UDID=$(idevice_id -l | head -n1)
# 真机运行测试
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "id=$UDID" test
# 模拟器运行测试
#xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "platform=iOS Simulator,name=iPhone X" test
脚本运行完成后,同样手机/模拟器上会出现一个无图标的 WebDriverAgent 应用,启动之后,马上又返回到桌面。此时终端会输出 IP 地址和端口。
有些国产的iPhone机器通过手机的IP和端口还不能访问,此时需要将手机的端口转发到Mac上。需要用到之前安装的 libimobiledevice 这个库。
# 把当前连接的 iOS 设备端口转发到 MacOS 的端口
iproxy 8100 8100
完成后可以直接使用 :8100/status 查看是否返回 JSON。inspector 也可以使用 :8100/inspector 访问。
上面我们在 iOS 设备上启动了 WDA 的服务端。为了运行 Mac OS 上的脚本,我们需要在 Mac OS 上安装 WDA 客户端。
总结:以上内容就是针对ios跳一跳辅助(由跳一跳外挂说起——初识 iOS 自动化测试框架 WebDriverAgent)详细阐释,如果您觉得有更好的建议可以提供给哪吒游戏网小编,ios跳一跳辅助(由跳一跳外挂说起——初识 iOS 自动化测试框架 WebDriverAgent)部分内容转载自互联网,有帮助可以收藏一下。
