前段时间的 ios-remote 工具目前已加入了不少的新功能:
1,保存截图
2,ipa 上传安装、卸载
3,设备型号、版本等信息获取
4,根据 bundle id 过滤实时日志并在前端展示
目前前端页面还是比较搓:
但是我们的实时操作响应速度目前非常快!App 内延时低于 300ms:
由于水平有限,目前我们急需强力前端大神,以及各路大神一起来完善这个工具,欢迎加入!
github 地址:
https://github.com/weamylady2/iOS_remote
效果很赞了。
相比较于 android 的 stf,iOS 目前最大的瓶颈是 ios minicap,一台 mac 执行机只能拖一台 iOS 设备,一比一的比例导致成本投入很高
想体验一直用不了;tomcat+war 直接启动的方式一直不行
iproxy 运行了 (这个没日志哦),ios-minicap 也能正常截图展示了。libimobiledevice 应该是装了
我觉得吧:是不是我直接打 war 这样不能放到 tomcat 运行?因为感觉 access 日志有 404;web 部署请求跳转相对路径不对?
好像确实是你们不支持直接 war 打包扔到 tomcat/webapps 下部署方式:
我打的是 ios.war;访问http://localhost:28080/ios/ios才能访问到主页。。
从截图可以看出,你们少了个 war 名称路径/ios 哦
卸载应用那里 最好能支持下拉选择
iproxy 报错 recv failed: Resource temporarily unavailable,导致发送的 json 到http://localhost:8200/session超时了
楼主有解么? 连接数改为 65536 了
问题是:iOS_remote 页面不可点击,因为 iproxy 报错 recv failed: Resource temporarily unavailable,导致发送的 json 到http://localhost:8200/session超时了
如果 wda 起来了,iproxy 也起来了应该就没问题,请问你的 mac 什么配置?启动 wda 需要多长时间?目前我是用 20 秒的时间启动 wda,如果你 20 秒时间起不来,那就要加一些时间了。
试了下楼主的 iOS_Remote。效果还不错。不过本人不懂 JAVA,还在研究源码,想改成可以连接多台的。如果方便的话,能否说下,若是要操控多台,连接多台的情况下,该如何修改你的代码。
连接多台你是要同时多个人使用多台吗?如果要做这个,就不能用 ios-minicap 来进行屏幕回显了,需要使用 idevicescreenshot。
在使用这个的时候能,可以连 xcode 跑项目吗?
楼主大大,我怎么点击一下,5 秒后才有反应;点击手机的键盘,也是 4-5 秒后才有反应;太慢了
跟 wda 交互好长时间
应该是可以的,只有一个 wda 的 xcode-build 命令在运行,这个命令应该可以运行多个实例等。
我怀疑是你 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
会的,ios-minicap 启动的时候会导致 WDA 挂掉,所以必须先启动 ios-minicap,才能启动 wda。
还有个问题就是想问下楼主,不知道楼主你是否有头绪。我把 iOS_minicap 的 run.sh 改了,改成传参数的,目的上是为了连接多台,就传 UDID 和端口号这样子,例如设备 1UDID,端口号 12345,设备 2UDID,端口号 12346。但是在测试的过程中,经常发现,要么一台机可以,另一台则报 java.net.ConnectException: Connection refused 。要么两台都不行。
界面中的 HOME 操作有效,可以用 BUNDLE ID 打开 APP ,可以截图,其它的操作就无效,这是什么原因呢,怎么解决呀大神
求回复~~
在线等,特别急~~
有没有同学出现过点击应用上的控件之后没有反应的情况,如点击 “登陆” 按钮,页面未发生变化,服务端也无异常
1、initWDA 方法中,desiredCapabilities 中 bundleId:com.apple.Preferences,是否只能操作 “设置” 和其他系统自带的应用,能否实现第三方应用间的跨应用操作?还是 bundleId 只能输入被测应用,不能跨应用
2、如可以跨应用,大神有没有出现过 minicap、wda 启动都没有问题,从桌面点开第三方应用后,该应用内的按钮点击了没反应。我这里启动 10 次,有 50% 左右的概率出现打开第三方应用后,点击控件坐标无响应。比如:有时候微信应用可以操作,有时候不行
就是遇到过这种情况,所以在初始化的时候,我才加上打开设置 app,这样子你在其它应用操作的时候就不会有问题。
你用手动点开你想要的应用就行了,那个启动 app 的功能你可以不用。
也就是说 initWDA 其实不用被调用,并且是可以跨应用操作的,对吗?
现在碰到的问题就是启动后,有时候手动点开微信后,微信中的按钮可以操作,但 QQ 点开后不能操作;下一次启动后,QQ 可以操作,微信打开后不能操作了。服务端也无错误提示,返回 status 都是 0,无异常。
iOS 系统:10.13.3
xcode:9.2
wda:今天更新的
initWDA 是一定要调用的,但是页面上那个 open application 的功能可以不用。你直接点就行了,至于 qq 还是微信,我们是用坐标操作的,跟 app 没关系
恩,明白原理是这样的,通过 web 请求控制 wda,wda 通过坐标点击手机屏幕。
这太奇怪了,启动 10 次,总有几次被测应用不可操作
楼主,你那边是可以跨应用操作的,对吧
能否提供一下你那边 mac OS, xcode, wda, iphone OS, 这 4 项的版本号,我本地验证下,谢谢
我这边没环境了~~ 你可以多看看 WDA 的日志,还有就是在 WDA 的 github 上的 issues 页面查一下有没有相关的 bug
我说这位老同事,可以使用前端技术省去一部分输入啊安装啊卸载啊啥的。
哥 为什么我在网页上点击没有反应?
老师好,我感觉我马上就要成功了,但是我这个点击网页没有反应
后台服务的日志:
哦 ,我也可能和上面一个同学的问题一样 iproxy 报错 recv failed: Resource temporarily unavailable,导致发送的 json 到http://localhost:8200/session超时了 这个是怎么回事呢
楼主厉害。我在使用 WDA 过程中有几个疑问麻烦帮忙看看哈。
WDA 里面有对设备的各种操作,比如截图、点击某个坐标等。
我想问的是,截图和点击这两个操作是可以同时下发给设备执行的吗?比如截图耗时 1s,那在这一秒内可以向设备下发点击的操作吗?还是说只能等截图完成后才能下发点击呢?