引言:
Apple公司因其无与伦比的设计,让无数果粉为之迷恋。但作为IOS测试人员,也因为IOS系统封闭和不开放库苦不堪言,羡慕死Android测试。不过没关系,本文将为你介绍一个IOS自动化测试框架WDA。
什么是WDA
WDA(WebDriverAgent)是Facebook推出的一个开源ios自动化测试框架。(官方链接:https://github.com/facebookarchive/WebDriverAgent)
WDA原理
W通过Mobile JSON Wire Protocol Specification协议,实现与浏览器的交互。与我们平常理解的服务器客户端过程不同,wda框架是以iPhone端作为服务器,运行测试脚本的mac端为发请求的客户端。
如下图,mac首先运行WebDriverAgent 工程,令iPhone上启动WDA这个app, 这个app实现了WebDriver server。然后mac端再作为客户端运行测试脚本,通过http协议向WDA app发起请求,服务端再通过调用XCTest.framework和调用苹果的API直接在设备上执行命令。
wda使用
1.环境搭建
前提:
本地有环境 xcode,node,carthage,libimobiledevice,iproxy。
如果没有,那么xcode可以在appstore下载最新,后几个分别用如下命令安装:
① brew install carthage
② brew install node
③ brew install --HEAD libimobiledevice
④ npm install -g iproxy
另外还需要一个开发者账户
步骤1:下载wda源码。
使用命令 git clone https://github.com/appium/WebDriverAgent
该地址是Facebook提供的官方仓库,另外Appium也提供一个wda仓库(
https://github.com/appium/WebDriverAgent.git,appium有时候会对facebook没有及时修复的bug的进行一些提前修复更新。供读者参考,笔者这里使用的就是appium提供的仓库)。
步骤2:初始化。
进入步骤一中下载的本地路径,执行 ./Scripts/bootstrap.sh。
步骤3.改签名。换成自己准备的开发者账户签名。
步骤4.启动服务
Product-Test启动后如下图。如果需要信任信用,在iPhone上设置-通用-设备管理-信任即可。
步骤5.验证服务状态
首先,设置端口转发 ——mac终端输入命令 iproxy 8100 8100 设备id (设备id可以通过命令 idevice_id -l查看);然后查看服务是否正常浏览器访问, http://localhost:8100/status,返回如下数据表示正常。
2.用例编写
1)查看元素信息
2)代码编写
以python测试脚本为例, 首先安装wda的python库 pip install facebook-wda 示例代码如下:
3.并行测试
Q:如果只有1台mac设备,但是想同时进行自动化测试怎么办?
A:使用不同的端口转发,为了方便,这里使用终端命令启动xcode。
/{你的xcode路径}/xcodebuild build-for-testing test-without-building -project /{你的wda项目路径}/WebDriverAgent.xcodeproj -schemeWebDriverAgentRunner -destination id={设备1的udid} USE_PORT={端口1}test
那么对应的端口转发就是 iproxy {端口1} {端口1} {设备1的udid}
在我这里的启动命令是
/usr/bin/xcodebuild build-for-testing test-without-building -project /Users/tenvideo/Documents/workspace/myproj/wda_from_appium/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destinationid=30a04ed46d97b716ff0e68021d3236ac47b789ac USE_PORT=8100 test
完成如下启动后,分别在测试脚本中指定端口和应用即可实现并行测试。
网友评论