iOS 测试 ios-remote 工具最新效果展示,欢迎前端大神、各路大神加入

water · 2017年10月27日 · 3924 次阅读

前段时间的 ios-remote 工具目前已加入了不少的新功能:
1,保存截图
2,ipa 上传安装、卸载
3,设备型号、版本等信息获取
4,根据 bundle id 过滤实时日志并在前端展示

目前前端页面还是比较搓:

但是我们的实时操作响应速度目前非常快!App 内延时低于 300ms:

由于水平有限,目前我们急需强力前端大神,以及各路大神一起来完善这个工具,欢迎加入!
github 地址:
https://github.com/weamylady2/iOS_remote

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

效果很赞了。
相比较于 android 的 stf,iOS 目前最大的瓶颈是 ios minicap,一台 mac 执行机只能拖一台 iOS 设备,一比一的比例导致成本投入很高

water #63 · 2017年10月27日 Author
krisdy 回复

是的

😭 想体验一直用不了;tomcat+war 直接启动的方式一直不行

water #61 · 2017年10月27日 Author
蓝蓝 回复

iproxy 运行了吗?还有 libimobiledevice 工具也要安装

water 回复

iproxy 运行了 (这个没日志哦),ios-minicap 也能正常截图展示了。libimobiledevice 应该是装了
我觉得吧:是不是我直接打 war 这样不能放到 tomcat 运行?因为感觉 access 日志有 404;web 部署请求跳转相对路径不对?

water 回复

好像确实是你们不支持直接 war 打包扔到 tomcat/webapps 下部署方式:
我打的是 ios.war;访问http://localhost:28080/ios/ios才能访问到主页。。

从截图可以看出,你们少了个 war 名称路径/ios 哦

water #58 · 2017年10月27日 Author
蓝蓝 回复

直接运行 mvn tomcat7:run-war 可以使用吗?

water #57 · 2017年10月27日 Author
蓝蓝 回复

我没试过运行 ios.war 的方式哦,对这个不太熟悉,能帮忙找到解决办法不?

water 回复

这个不行哦,一直 build failed.

water 回复

😃 这样,那我琢磨下你们的代码;仍然谢谢你,期待你们的优化!

water #54 · 2017年10月27日 Author
蓝蓝 回复

build fail 就是有地方有问题,看看日志解决下咯。

卸载应用那里 最好能支持下拉选择

water #51 · 2017年10月30日 Author
codeskyblue 回复

嗯,这个后续可以加上。

iproxy 报错 recv failed: Resource temporarily unavailable,导致发送的 json 到http://localhost:8200/session超时了


楼主有解么?😭 连接数改为 65536 了

water #49 · 2017年10月31日 Author
蓝蓝 回复

你单独运行一下 resources 目录下的 execWDA.sh,看是否能运行起来?

water 回复

可以的,问题还是一样存在

water #47 · 2017年11月01日 Author
蓝蓝 回复

你这个不是好使了么?

water 回复

问题是:iOS_remote 页面不可点击,因为 iproxy 报错 recv failed: Resource temporarily unavailable,导致发送的 json 到http://localhost:8200/session超时了

water #45 · 2017年11月01日 Author
蓝蓝 回复

如果 wda 起来了,iproxy 也起来了应该就没问题,请问你的 mac 什么配置?启动 wda 需要多长时间?目前我是用 20 秒的时间启动 wda,如果你 20 秒时间起不来,那就要加一些时间了。

water 回复

改 iOS_remote 源码里面的请求发送时间哦;多谢!我试试

试了下楼主的 iOS_Remote。效果还不错。不过本人不懂 JAVA,还在研究源码,想改成可以连接多台的。如果方便的话,能否说下,若是要操控多台,连接多台的情况下,该如何修改你的代码。

water #23 · 2017年11月09日 Author
蓝畔湖光 回复

连接多台你是要同时多个人使用多台吗?如果要做这个,就不能用 ios-minicap 来进行屏幕回显了,需要使用 idevicescreenshot。

water 回复

😃 额。多台是指多台手机,类似 stf 那样

water #40 · 2017年11月10日 Author
蓝畔湖光 回复

要做设备管理平台就麻烦了,暂时没想做,我是跟我们自己的另一个平台集成使用了。

在使用这个的时候能,可以连 xcode 跑项目吗?

😭 楼主大大,我怎么点击一下,5 秒后才有反应;点击手机的键盘,也是 4-5 秒后才有反应;太慢了
跟 wda 交互好长时间

water 回复

😃 想问下楼主。wda 先在程序启动可以吗?会影响到 ios_minicap 吗

water #29 · 2017年11月20日 Author
Michael_Wang 回复

应该是可以的,只有一个 wda 的 xcode-build 命令在运行,这个命令应该可以运行多个实例等。

water #35 · 2017年11月20日 Author
蓝蓝 回复

我怀疑是你 ios-minicap 没有添加延时,所以程序处理不过来,导致延时了。请按照下面这一步操作:

6、Change and Rebuild ios-minicap


In order to reduce the pressure of MAC, we need to reduce the frequency of sending imgs from minicaps.

Go to the ios-minicap folder, and Edit the "src/minicap.cpp", Add a method:


static void sleep_ms(unsigned int secs)
{
struct timeval tval;
tval.tv_sec=secs/1000;
tval.tv_usec=(secs*1000)%1000000;
select(0,NULL,NULL,NULL,&tval);
}
Then add a sleep in main:


while (gWaiter.isRunning() and gWaiter.waitForFrame() > 0) {
client.lockFrame(&frame);
encoder.encode(&frame);
client.releaseFrame(&frame);
putUInt32LE(frameSize, encoder.getEncodedSize());
if ( pumps(socket, frameSize, 4) < 0 ) {
break;
}
if ( pumps(socket, encoder.getEncodedData(), encoder.getEncodedSize()) < 0 ) {
break;
}
sleep_ms(50);
}
Next step is rebuilding ios-minicap, runing the build.sh in ios-minicap folder:


$ ./build.sh 
mkdir: build: File exists
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/waterhuang/Downloads/ios-minicap-master/build
[100%] Built target ios_minicap
water #31 · 2017年11月20日 Author
蓝畔湖光 回复

会的,ios-minicap 启动的时候会导致 WDA 挂掉,所以必须先启动 ios-minicap,才能启动 wda。

water 回复

还有个问题就是想问下楼主,不知道楼主你是否有头绪。我把 iOS_minicap 的 run.sh 改了,改成传参数的,目的上是为了连接多台,就传 UDID 和端口号这样子,例如设备 1UDID,端口号 12345,设备 2UDID,端口号 12346。但是在测试的过程中,经常发现,要么一台机可以,另一台则报 java.net.ConnectException: Connection refused 。要么两台都不行。

water 回复

我加了哦延迟 50ms,点击发现很慢,改为 20ms,最后又去掉了。。还是很慢。。主要是 wda 那个响应慢哦

water #31 · 2017年11月24日 Author
蓝畔湖光 回复

ios-minicap 只支持一台的,不支持多个同时运行。

water #30 · 2017年11月24日 Author
蓝蓝 回复

wda 我这边响应还挺快的,主要升级 mac os 和 xcode,用最新版的 wda。

water #29 · 2017年11月24日 Author
蓝蓝 回复

加 50ms 并不算是延时,只是减少了 ios-minicap 的帧率,不影响反应速度的。

water 回复

😃 灰常感谢!

water 回复

😅 不支持多台的呀。蛋疼,搞了将近一星期

界面中的 HOME 操作有效,可以用 BUNDLE ID 打开 APP ,可以截图,其它的操作就无效,这是什么原因呢,怎么解决呀大神

求回复~~

在线等,特别急~~

23楼 已删除
蓝畔湖光 回复

我现在跟你一样的问题,不知你后来怎么解决了

water #21 · 2018年04月17日 Author
heygrl 回复

能解决多台的话,也请告诉我一下好么= 3=

有没有同学出现过点击应用上的控件之后没有反应的情况,如点击 “登陆” 按钮,页面未发生变化,服务端也无异常

water #19 · 2018年04月24日 Author
磊磊 回复

按 F12 看看控制台有没有报错

water 回复

1、initWDA 方法中,desiredCapabilities 中 bundleId:com.apple.Preferences,是否只能操作 “设置” 和其他系统自带的应用,能否实现第三方应用间的跨应用操作?还是 bundleId 只能输入被测应用,不能跨应用
2、如可以跨应用,大神有没有出现过 minicap、wda 启动都没有问题,从桌面点开第三方应用后,该应用内的按钮点击了没反应。我这里启动 10 次,有 50% 左右的概率出现打开第三方应用后,点击控件坐标无响应。比如:有时候微信应用可以操作,有时候不行

water #17 · 2018年04月24日 Author
磊磊 回复

就是遇到过这种情况,所以在初始化的时候,我才加上打开设置 app,这样子你在其它应用操作的时候就不会有问题。
你用手动点开你想要的应用就行了,那个启动 app 的功能你可以不用。

water #49 · 2018年04月24日 Author
磊磊 回复

你更新下 xcode、ios 系统、wda 到最新版本试试

water 回复

也就是说 initWDA 其实不用被调用,并且是可以跨应用操作的,对吗?
现在碰到的问题就是启动后,有时候手动点开微信后,微信中的按钮可以操作,但 QQ 点开后不能操作;下一次启动后,QQ 可以操作,微信打开后不能操作了。服务端也无错误提示,返回 status 都是 0,无异常。
iOS 系统:10.13.3
xcode:9.2
wda:今天更新的

water #14 · 2018年04月24日 Author
磊磊 回复

initWDA 是一定要调用的,但是页面上那个 open application 的功能可以不用。你直接点就行了,至于 qq 还是微信,我们是用坐标操作的,跟 app 没关系

water 回复

恩,明白原理是这样的,通过 web 请求控制 wda,wda 通过坐标点击手机屏幕。
这太奇怪了,启动 10 次,总有几次被测应用不可操作

water 回复

楼主,你那边是可以跨应用操作的,对吧
能否提供一下你那边 mac OS, xcode, wda, iphone OS, 这 4 项的版本号,我本地验证下,谢谢

water #11 · 2018年04月28日 Author
磊磊 回复

我这边没环境了~~ 你可以多看看 WDA 的日志,还有就是在 WDA 的 github 上的 issues 页面查一下有没有相关的 bug

我说这位老同事,可以使用前端技术省去一部分输入啊安装啊卸载啊啥的。

yca 回复

请尽情修改源码- 3-欢迎欢迎!

哥 为什么我在网页上点击没有反应?

water #58 · 2018年07月31日 Author
芈娜 回复

看看网页控制台有打印什么错误没有

老师好,我感觉我马上就要成功了,但是我这个点击网页没有反应

后台服务的日志:

哦 ,我也可能和上面一个同学的问题一样 iproxy 报错 recv failed: Resource temporarily unavailable,导致发送的 json 到http://localhost:8200/session超时了 这个是怎么回事呢

你的手机型号是多少呀?看看有没有添加在设备列表里面

换 github 上面最新的 WDA 试了吗?签名那些搞好没?

LHY 回复

请问你的问题解决了吗?我的问题和你一模一样

匿名 #1 · 2019年11月25日

楼主厉害。我在使用 WDA 过程中有几个疑问麻烦帮忙看看哈。
WDA 里面有对设备的各种操作,比如截图、点击某个坐标等。
我想问的是,截图和点击这两个操作是可以同时下发给设备执行的吗?比如截图耗时 1s,那在这一秒内可以向设备下发点击的操作吗?还是说只能等截图完成后才能下发点击呢?

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