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

sixleaves · 2016年10月21日 · 最后由 Jackey 回复于 2017年03月08日 · 2544 次阅读
本帖已被设为精华帖!

前提

介绍一下 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 通信可以独立出来啊

陈恒捷 将本帖设为了精华贴 10月21日 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,是不是这样呢?

谢谢分享

匿名 #4 · 2016年11月16日

学习了

匿名 #15 · 2016年12月30日

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

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

期待完整的 monkey 方案

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