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

codeskyblue · February 16, 2017 · Last by Endless replied at May 12, 2020 · 4592 hits

起源

正好@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 条回复 时间 点赞
2Floor has been deleted

安卓该怎么玩~~

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

咨询一个问题,你们的设备是否有集中管理,多机器运行的调度有用什么平台管理吗?
我考虑在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

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up