ATX ATX 系列 - 并行测试多个 iOS 设备

codeskyblue · 2017年02月16日 · 最后由 Endless 回复于 2020年05月12日 · 3947 次阅读

起源

正好@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.

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 22 条回复 时间 点赞
22楼 已删除

安卓该怎么玩~~

直接看官网文档,很好理解

咨询一个问题,你们的设备是否有集中管理,多机器运行的调度有用什么平台管理吗?
我考虑在 openstf 中集成自动化运行的功能和 iOS 设备管理功能,感觉要填的坑挺多的

张新 回复

坑是很多,目前内部我们自己做了一个设备管理平台。还可以酬和着用

多台设备的情况下。wdaproxy 这个怎么用。不能转发监听多台手机的端口吗。listen tcp :8200: bind: address already in use

蓝畔湖光 回复

-p 换个别的端口号

codeskyblue 回复

😧 那我脚本代码里的端口号怎么处理。用同个脚本跑多台手机

蓝畔湖光 回复

wdaproxy 只能搞定一个手机,搞定多个手机,需要启动多个 wdaproxy

codeskyblue 回复

😓 怎么启动多个 wdaproxy。 我是做 ios 开发的,公司让我研究下这块,所以很多都不太懂。

蓝畔湖光 回复

😓多开几个终端,一个个的启动就好了

codeskyblue 回复

😳 能连本机的同个端口吗。试了下,好像不能同个端口,我想问的是,我代码是 localhost:8200。那我跑另外一台连 8300 端口的手机怎么处理

蓝畔湖光 回复

代码改成 localhost:8300

codeskyblue 回复

😓 那有很多台手机怎么办

蓝畔湖光 回复

以此类推

codeskyblue 回复

😮 这样呀。好的谢谢。

mark,感谢分享

wda 能跨应用操作吗,比如登陆 APP 时拉起微信或者 QQ 以后,再次操作系统还能正常相应?

wda 只能手动去启动吗,我用 python 的 subprocess.Popen 在代码中启动,一直就停在这里,在终端同样的命令就不会,实在不懂了

同问,我有 3 个 iphone 手机,需要跑 3 个不同的脚本,但是我只有一台 macbook,如何实现呢?

我去催饭 回复

开三个 xcode iproxy 到不同的端口

转发端口登录后 502

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册