其他分享
首页 > 其他分享> > 做iOS自动化测试必须知道的一些知识

做iOS自动化测试必须知道的一些知识

作者:互联网

WDA

facebook wda

2015年Facebook 开源了一款 iOS 移动测试框架WebDriverAgent,WebDriverAgent 在 iOS 端实现了一个 WebDriver server ,借助这个 server 我们可以远程控制 iOS 设备。你可以启动、杀死应用,点击、滚动视图,或者确定页面展示是否正确。它通过链接 XCTest.framework 并调用苹果的 API 直接在设备上执行命令。这使得它成为应用程序端到端测试或通用设备自动化的完美工具

wda作为任何UITest的捆绑软件启动,WebDriverAgentRunner作为一个后台应用运行在iOS手机上,
ServerURLHere->http://[SOME_IP]:8100<-ServerURLHere即在手机上8100端口启动一个HTTP server,内部就是一个死循环,监听网络传输过来的webdriver协议的数据,解析并处理点击事件

但该项目已经存档(archived),不再维护。2019年5月,Facebook开源了IDB,即“ iOS Development Bridge”,这是一个用于使iOS模拟器和设备自动化的命令行界面。他们正在将自己的内部项目从WDA迁移到IDB,并建议将其检查出来作为替代方案

appium wda

由于facebook wda已经停止维护,现在一般推荐使用fork自 facebook wda的appuim wda

airtest wda

iOS-Tagent也是基于 facebook 的 WebDriverAgent 项目上进行开发的 , 目的是为了对 Airtest Project 提供iOS平台的测试支持,该项目在原项目的基础上进行了定制化的优化和功能调整

XCTestWD

XCTestWD是WebDriver server的Swift版本实现,主要用于Macaca自动化项目,这里不做过多介绍,更多可参考官方文档Macaca面向多端的自动化测试

wda的安装和启动

usbmux、libimobiledevice、usbmuxd及libusbmuxd

安装libimobiledevice

brew install libimobiledevice --HEAD

libimobiledevice常用命令

更多参看libimobiledevice Usage

iOS自动化

综上,WDA会在iOS 端实现了一个 WebDriver server,并监听网络传输过来的webdriver协议的数据,通过电脑与手机端口的映射,我们就可以通过电脑发送网络请求到手机上的server,server就能解析并处理点击事件了

tidevice

因此我们需要做的是安装并启动WDA,设置端口转发。在tidevice出现之前,WDA只能通过xcodebuild来启动,而运行xcodebuild则必须有一台Mac才行。tidevice没有通过xcodebuild,而是通过usbmuxd直接跟手机上的服务进行直接通信完成手机上WDA的启动。usbmux在不同的平台都有开源的实现,所以tidevice不仅能在Mac上运行,也能在Linux、Windows上运行

  1. tidevice relay,转发请求到手机,类似于iproxy如tidevice relay 8100 8100
  2. tidevice xctest,运行xctest
# 运行XCTEST
$ tidevice xctest -B com.facebook.wda.WebDriverAgent.Runner
[I 210127 11:40:23 _device:909] BundleID: com.facebook.wda.WebDriverAgent.Runner
[I 210127 11:40:23 _device:911] DeviceIdentifier: 12345678901234567890abcdefg
[I 210127 11:40:23 _device:773] SignIdentity: 'Apple Development: -Your-Developer-Name-'
[I 210127 11:40:23 _device:840] Launch 'com.facebook.wda.WebDriverAgent.Runner' pid: 239
[I 210127 11:40:23 _device:1003] ProductVersion: 12.4
[I 210127 11:40:24 _device:952] Start execute test plan with IDE version: 29
[I 210127 11:40:24 _device:875] WebDriverAgent start successfully

# 修改监听端口为8200, 并显示调试日志
$ tidevice xctest -B com.facebook.wda.WebDriverAgent.Runner -e USB_PORT:8200 --debug
  1. tidevice wdaproxy命令,wdaproxy这个命令会同时调用xctest和relay命令,另外当wda退出时,会自动重新启动xctest
# 可通过tidevice applist来获取wda的BundleID
# 运行 XCTest 并在PC上监听8200端口转发到手机8100服务
# facebook-wda
$ tidevice wdaproxy -B com.facebook.wda.WebDriverAgent.Runner --port 8200
# appium的wda
$ tidevice wdaproxy -B com.gameappium.WebDriverAgentRunner.xctrunner --port 8200

可通过在浏览器中访问http://localhost:8200/status来查看WDA是否启动成功
Linux和Windows因为默认没有usbmux这个服务,提前安装一下就可以。可以参考这个issue
启动后你就可以使用Appium 或者 facebook-wda 来运行iOS自动化了

更多关于tidevice可参看tidevice

参考及扩展阅读

更多知识可关注个人公众号:CodeMonkeyJerry

标签:wda,端口,iOS,facebook,测试,自动化,WebDriverAgent,tidevice
来源: https://www.cnblogs.com/mliangchen/p/15174202.html