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