起源

正好@sixleaves 问到了,怎么用 macaca 并行测试 iOS 设备。macaca 我懂得不太多,爱莫能助,说下 ATX 是如何做的,其实也蛮简单的。看看能不能帮上点忙。

安装 WDA 到手机上

以前写过这方面的文章,直接参考这篇文章就好了 https://testerhome.com/topics/7220
平常我都是 SSH 远程连接 Mac 操作的,所以用的最多的是命令行。这里介绍下命令行如何启动 WDA

unlock keychain

苹果爸爸规定,安装到手机的应用都需要经过签名,WDA 也不例外,所以需要有访问 keychain 的权限,使用命令将其打开

security unlock-keychain ~/Library/Keychains/login.keychain

这时会提示输入管理员的密码,输入下就好了。

命令行启动 WDA

多个手机跟一个手机的区别不大。我先介绍一个设备怎能启动 WDA,然后照胡楼画瓢,启动其他设备就可以了

国内的苹果机器都很蛋疼,必须用到 iproxy 转发,但是 iproxy 只监听本地的请求,所以还需要再转发一次。看不懂没关系,总之很头疼。

先安装一个我写的代理转发工具wdaproxy(PS: 使用方法可能会变)

brew install openatx/tap/wdaproxy

将多个苹果手机都插到 Mac 上,运行 idevice_id -l获取设备的 udid 列表。选择第一个,比如 54ad172e22d8372eb752f413280731cdcc200954

命令行这样写

UDID=54ad172e22d8372eb752f413280731cdcc200954
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "id=$UDID" test

在开一个 Terminal,转发手机监听的 8100 端口到本地

# listen 8200
wdaproxy -u 54ad172e22d8372eb752f413280731cdcc200954 -p 8200

这个时候,加入安装了 ATX 的话,写段连接测试下

import atx

# localhost可以改成Mac电脑的IP
d = atx.connect("http://localhost:8200")
print d.status()

用同样的方法搞定其他手机即可。

Good luck.


↙↙↙阅读原文可查看相关链接,并与作者交流