iOS 测试 介绍一个新的支持 iOS 真机的框架 WDUSBClient

sixleaves · October 21, 2016 · Last by Jackey replied at March 08, 2017 · 2776 hits
本帖已被设为精华帖!

前提

介绍一下WDUSBClient, 也是基于WD开发, 目前支持iOS9, iOS10, 支持真机国行, 港版, 美版设备. 下面介绍一下具体的安装流程。希望有相应的问题, 给我提交issue, 尽量完善这个框架.

准备

下载WDUSBClient

https://github.com/sixleaves/WDUSBClient

配置

配置WebDriverAgent(请到我的github上下载)

step 1 打开工程, 配置证书

我们需要为以下这几个TATGETS地方配置证书。如下图

以WebDriverAgentLib证书配置为例子.

先选中WebDriverAgentLib. 然后选General选项卡。再选择Signing下面的Team, 选择你在苹果注册的帐号名称.如下图。

而WebDriverAgentRunner的配置则比较特殊.需要选择Build Settings选项卡。

  • 输入pack,如图,修改Product Bundle identifier。

  • 输入sig, 如图将Code Signing Identity全都修改为iOS Developer。Development Team修改为你对应的帐号。

其它几个签名配置,差不多给以按照上面两种配置。大家依葫芦画瓢即可。

安装

安装WebDriverAgent到真机上

  • 需要你先获取手机的udid。
  • WebDriverAgent的项目根目录。

如后将下面命令粘贴到终端, 并回车运行。记住运行后不要关闭终端

xcodebuild -project /Users/admini/WebDriverAgent/WebDriverAgent.xcodeproj \
-scheme WebDriverAgentRunner \
-destination 'platform=iOS,id=a49bcbd6a9d3b24b8f70b8adde348925a5bfac6e' \
test

把project后面那一串路径换成你的路径。id后面的值替换成你的udid。

安装WDUSBClient.

这是要重点介绍的, 为了让大家直观的看到效果。需要先将我工程里的demo跑到手机上。再运行WDUSBClient客户端。步骤如下

安装测试程序
Step1. 选择TestAppForIOS 2那个选项, 并选择对应真机

step2. 选择对应的签名证书

step3.编译到手机

直接使用快捷键 CMD + R就可以进行编译。

安装WDUSBClient
step1. 先选中WDUSBClient这个scheme

step2. 修改ViewContronller中的测试代码.提供UDID和对应的BundleID

step3.直接编译到mac

编译到mac后就会启动WDUSBClient, 会自动启动手机上的测试程序。

后续

先提供一个可以玩的版本给大家.很想把这东西做到完美。现在工程内还有很多需要重构的代码。后续会继续提供以下功能, 更多相关功能欢迎提供建议, 我们会综合考虑尽量加进去。

  • monkey测试.
  • 自动化的编译程序.(屏蔽WD驱动程序的编译安装)

具体细节和wiki。请参见github(https://github.com/sixleaves/WDUSBClient)

共收到 16 条回复 时间 点赞

好文,usb通信可以独立出来啊

陈恒捷 将本帖设为了精华贴 21 Oct 11:21

加精理由:把 USB 通讯和 WDA 结合起来,完成一套相对完整的方案,降低了上手门槛。

话说,这篇文章也可以加入项目的 ReadMe 里面呀,说明非常详细~

#1楼 @xdf 嗯!
#4楼 @chenhengjie123 恩。谢谢提醒。

有连接错误的重新git pull或者git clone一份。刚修复了一个链接问题,sorry。

多加了一个微信自动发消息的例子😂
别拿去恶作剧啊😂

@sixleaves 请教下iproxy跟usb直接通信的区别是什么?使用usb通信可以操作iOS10.1的手机了吗?

请教下,这个是解决了那个国行手机模块的BUG问题么,还是说,是用USB通讯规避那个问题。

#8楼 @codeskyblue 很久没登入了, 刚看到。iproxy我不了解,看了github上的项目介绍,说了这么一句话iProxy is just an evening hack of a project so it's far from perfect。iProxy的实现原理是通过去hook系统的API或者调用私有API实现。我这里的USB通信是可以直接操作10.0的手机, 如果手机版本又升级了,需要升级对应的XCode去匹配。

#9楼 @wang04170 这个怎么说。。。我觉得在物理层是有问题的,默认走的是无线信道,所以改用USB方式规避。

通信模块直接借用了FBHTTPOverUSBClient,作者更多的工作只是做了一个OC的client,是不是这样呢?

谢谢分享

在真机上启动webdriverAgent后,控制台显示IP访问,后又提示listening on usb,我想用ip+端口的方式来连接不了。难道没有人遇到这种问题?感觉应该很普通呀。。我仅仅是想用ip+端口访问。

#15楼 @lrw3716740 这个,还真访问不了。你只能用端口映射。

期待完整的monkey方案

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