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的安装和启动

  • 安装:可参考各自官方指南如iOS-Tagent 安装、iOS 真机如何安装 WebDriverAgent
    启动方式:
    facebook wda启动方式可参考Starting WebDriverAgent,Xcode, xcodebuild 或FBSimulatorControl
    appium wda 启动方式可参考Appium XCUITest Driver Real Device Setup
    usbmux、libimobiledevice、usbmuxd及libusbmuxd
    usbmux是苹果的私有协议,苹果设计该协议的原因是为了自家的macOS APP能够和iDevice进行通信,从而实现诸如iTunes备份iPhone、Xcode真机调试等功能
    libimobiledevice 是一个使用原生协议与苹果iOS设备进行通信的库,可以把iPhone端口映射到电脑端口,那么就可以通过访问电脑的端口访问到手机的端口了
    libimobiledevice底层使用的是usbmuxd,usbmuxd(USB multiplexing daemon)是跨平台的与iOS设备多路复用连接的scoket守护进程,该进程的作用是建立本地端口和远程端口的转发,实现usb到tcp的转换服务,根据相关usb协议,客户端将请求包发送到usbmuxd进程,通过usbmuxd转发到对方设备,实现tcp连接。而更底层用的是libusbmuxd,更详细的可点击查看项目中的介绍

安装libimobiledevice

brew install libimobiledevice --HEAD

libimobiledevice常用命令

  • 端口转发:iproxy xxxx yyyy(本地xxxx端口到设备的yyyy端口)
    如将本地8100端口映射到设备端口8100即iproxy 8100 8100,这样就可以通过访问电脑的端口访问到手机的端口了
  • 查看设备系统日志idevicesyslog
  • 查看连接设备信息ideviceinfo

iOS自动化

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

tidevice

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

  • 安装WDA
    方法1:(必须mac)将iOS设备与一台Mac连接,然后使用xcode编译源码安装,成功安装WebDriverAgent即可脱离Mac
    方法2:使用tidevice的安装命令,将开发者证书重签名的WebDriverAgent.ipa安装到iOS设备上

  • 运行WDA

  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是否启python教程动成功
Linux和Windows因为默认没有usbmux这个服务,提前安装一下就可以。

做iOS自动化测试必须知道的一些知识相关推荐

  1. 使用windows电脑做IOS自动化测试

    一:搭建环境 python 3.6 以上 node jdk iTunes及驱动 pip3 install -U "tidevice[openssl]"  -->window电 ...

  2. 如何使用UIAutomation进行iOS 自动化测试(初学者)

    写在前面 研究iOS的自动化测试也有些日子了,刚开始的时候,一直苦于找不到什么好的资料,只能从Apple的官网查阅相关的API文档,只可惜,Apple对开发者来说实在是不怎么友好,文档写得相当的粗略, ...

  3. 做iOS开发的这2年:30而立投身iOS开发嫌晚?

    为什么80%的码农都做不了架构师?>>>    很多程序员自称"码农",他们自嘲干的是体力活儿,吃的是青春饭.30以后还在苦逼的和Code打交道的人生是失败的. ...

  4. 想做Python自动化,这些Python常用知识你都掌握了吗?

    想要学好python自动化测试,当然不可缺少的知识就是python基础知识,有不少同学python学了一遍又一遍,得不到实际运用,所以时间一长,基础知识慢慢还是归零,既浪费了时间又打消了自己的积极性. ...

  5. 最新出炉--IOS自动化测试环境搭建(Python Java)

    一.前言 IOS的App自动化测试与Android的一样,也可以用appium来进行.但是IOS自动化依赖苹果的osx系统.Xcode构建等,且封闭的系统需要苹果开发者账号才可以驱动真机.Appium ...

  6. 切图iOS和android区别,用sketch也要画iOS和android两套吗|Sketch如何用一套设计稿做iOS和Android两个版本 - PS下...

    很多Sketch 新手刚进入接触UI设计的时候,不知道如何用一套设计稿来处理IOP和安卓两个系统的图,那么如何用一套设计稿较快速地做 iOS 和 Android 两个版本 app?是不是要做两套呢?然 ...

  7. python运行启动报错解决方法_51testing:iOS自动化测试的那些干货:关于appium启动报错问题的解决办法...

    原标题:51testing:iOS自动化测试的那些干货:关于appium启动报错问题的解决办法 我们在进行iOS Appium自动化测试的时候,会遇到环境配置.兼容使用问题,这里做个总结,以避免后续踩 ...

  8. iOS自动化测试辅助工具--Reveal配置及使用

    iOS自动化测试中,最关键的问题就是UI控件元素的识别,Xcode中的UIAutomation可以辅助做这个工作,但是使用时,需要启动Instrument,并启动录制脚本,比较麻烦. 下面为大家介绍另 ...

  9. 用 Pytest+Appium+Allure 做 UI 自动化测试的那些事儿

    本文首发于 TesterHome 社区, 文末有福利 !链接 https://testerhome.com/topics/19327 前言 做 UI 自动化测试有段时间了,在 TesterHome 社 ...

最新文章

  1. Confluence 6 下载和安装 MySQL 驱动
  2. 删除控制_别了 Flash!Win10已全面删除:已从控制面板和安装文件中消失
  3. 性能测试工具MultiMechanize的使用介绍
  4. Ybtoj-排列计数【矩阵乘法,分块幂】
  5. 其他脚本与 asp.net 脚本一起验证时容易出的问题
  6. ARM中断分析之三:WinCE驱动的中断分析
  7. V 8 nfs+drbd+heartbeat
  8. Java笔记-对CountDownLatch的理解(对比Qt中的QSemaphore)含实例
  9. HashMap 实现原理及源码解析(jdk8 底层⽤的是数组+链表/红⿊树)
  10. revit对齐命令选不中_如何利用无人机+Photoscan+Revit完成土方计算
  11. AC日记——独木桥 洛谷 p1007
  12. Key为数字的Json数据标准化成标准Json格式
  13. 2017美赛C题论文学习笔记
  14. C# winForm启动最小化到任务栏右侧通知栏并交互操作
  15. SpringBoot(30) 整合PageOffice实现在线编辑Word和Excel
  16. STM STC NXP单片机 按键扫描
  17. NDT-MCL定位算法论文解读
  18. android实现刷卡功能,Android 实现银联刷卡机消费后手动签名的功能(示例代码)
  19. cesium 隐藏entity_Cesium中Entity讲解
  20. Sprite Kit 移动精灵

热门文章

  1. 单利模式的优缺点和使用场景
  2. 使用minizip压缩文件
  3. 数组----二维数组
  4. 数学定理(1)——正态分布
  5. 北京工作居住证续签注意的问题
  6. 硬盘坏道数据恢复-硬盘开盘数据恢复-天伟数据恢复
  7. 智能电表如何采集数据?
  8. 作为成年人的基本道德之一,就是不…
  9. 牙齿间隙变大怎么办_牙缝大怎么办?
  10. 软考中级一般需要备考多久?过来人告诉你