使用WDA调试真机iOS

WebDriverAgent简称WDA,是由Facebook推出的一款iOS测试框架。它在iOS客户端实现了一个WebDriver的server,借助这个server,我们可以控制iOS设备进行测试。

1. 安装 Carthage

WDA使用carthage管理项目依赖,所以开始之前,我们先使用homebrew安装carthage。如果没安装homebrew,需要先自行安装homebrew

brew install carthage

安装carthage之后,可查看版本即为安装成功,当前最新版本为0.32.0

carthage version

2. 下载WDA并初始化

2.1 下载代码

git clone https://github.com/facebook/WebDriverAgent

2.2 初始化WDA

cd WebDriverAgent
./Scripts/bootstrap.sh


该脚本会使用carthage下载所有依赖,使用npm打包响应的js文件。
执行完成后,双击WebDriverAgent.xcodeproj打开WDA项目。

3. 解决证书签名问题

安装软件到真机上需要证书签名。

3.1 修改BundleID

根据下图步骤提示将com.facebook.WebDriverAgentRunner改为其他BundleID,只要不和别人重复就好。

3.2 证书签名

根据下图提示登录并选择你的账号。

4. 运行与测试

按照下图的步骤,Scheme选择WebDriverAgentRunner,Destination选择你要测试的真机。

使用快捷键Command + U运行项目Test,一切正常的话,手机上会出现一个无图标的WebDriverAgent应用,Xcode出现下图提示。

这是因为手机上没有信任你的证书,打开手机的设置-通用-描述文件与设备管理,信任你的账号即可。
回到Xcode,再次按Command + U运行项目Test,稍等片刻即可看到Testing WebDriverAgentRunner。使用快捷键Command + Shift + C打开控制台,可以看到设备的IP和端口,加上/status合成一个url地址,例如http://192.168.2.100:8100/status,访问该url如果可以看到一段json文本,说明WDA运行成功了。

5. 端口转发

有些国产的iPhone机器通过手机的IP和端口还不能访问,此时需要将手机的端口转发到Mac上。

brew install imobiledevice
iproxy 8100 8100

这时通过访问http://localhost:8100/status确认WDA是否运行成功。

而inspector的地址是http://localhost:8100/inspector, inspector是用来查看UI的图层,方便写测试脚本用的。

6. 使用终端代替Xcode

通常来说为了持续集成,能够全部自动化比较好一些

# 解锁keychain,以便可以正常的签名应用,
PASSWORD="replace-with-your-password"
security unlock-keychain -p $PASSWORD ~/Library/Keychains/login.keychain
# 获取设备的UDID
UDID=$(idevice_id -l | head -n1)
# 运行测试
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination "id=$UDID" test