前言

一直以来,iOS自动化的实现&执行都依赖 Mac 系统,其主要原因是因为需要通过 Xcodebuild 编译&安装 WDA (WebDriverAgent) 到 iOS 设备中,通过WDA实现对被测应用进行操作。而Windows系统无法运行Xcode工具,所以无法运行iOS自动化测试。

Windows上实现iOS APP自动化测试:tidevice + WDA + facebook-wda / appium - 测试开发小记 - 博客园

tidevice 简介

针对这种情况,阿里团队开源了一个内部使用的 iOS自动化工具 :

tidevice (https://github.com/alibaba/taobao-iphone-device) 让我们可以更方便、简单的脱离Mac的限制。

功能

该工具能够用于与iOS设备进行通信, 提供以下功能

  • 截图
  • 获取手机信息
  • ipa包的安装和卸载
  • 根据bundleID 启动和停止应用
  • 列出安装应用信息
  • 模拟Xcode运行XCTest,常用的如启动WebDriverAgent测试(此方法不依赖xcodebuild)
  • 获取指定应用性能(CPU,MEM,FPS)
  • 其他
  • 支持运行在Mac,Linux,Windows上

tidevice核心原理

usbmux通信协议:实现 Mac/Windows/Linux与 iOS设备服务间的通信

Mac端:usbmuxd 是苹果的一个服务,这个服务主要用于在USB协议上实现多路TCP连接,将USB通信抽象为TCP通信。苹果的iTunes、Xcode,都直接或间接地用到了这个服务。

Linux / Windows端:本身是没有 usbmux的,不过都有开源项目的实现,可以直接使用参考

Windows 另外依赖 AppleApplicationSupport和AppleMobileDeviceSupport 两个服务,安装Itunes 环境即可安装对应服务。

usbmux 本身是socket套接字,通过截获、破解等手段,结合开源界的成果,用python 进行模拟,从而实现了当前工具已有的所有功能

tidevice安装

  • Python 3.6+
  • tidevice 安装

pip3 install -U "tidevice[openssl]" (推荐)

pip3 install -U tidevice

usbmuxd 安装 

  • Mac 自带:/var/run/usbmux
  • Linux/Windows: 参考官方建议的 tidevice.exceptions.MuxError: socket unix:/var/run/usbmuxd unable to connect · Issue #7 · alibaba/taobao-iphone-device · GitHub

PS:win下其实不用装。

tidevice 使用 #略

运行WDA

1.运行WDA(WebDriverAgent)之前首先需要将iOS设备安装好WDA应用。WDA安装需要在Mac电脑中打开xcode然后编译安装。具体参考官网实例。

2.打开命令窗口输入如下命令,注意修改端口号为8200,避免与WDA默认端口8100冲突。

tidevice wdaproxy -B com.facebook.WebDriverAgentRunner.xctrunner --port 8200

其中的包名通过tidevice applist找到WDA应用的包名。

运行之后,如果最后报WebDriverAgent start successfully则表示运行成功。

3.运行完成后在打开浏览器输入地址: http://127.0.0.1:8200/status查看返回内容,正常会返回一个json数据。

注意:目前已知的两个问题

  • 不支持运行企业证书签名的WDA
  • 未认证的数据线可能导致WDA连接中断,建议使用原装苹果数据线。

4.运行WDA后启动Appium服务即可开始执行iOS自动化测试。

Win环境使用appium运行注意事项

Win环境运行注意需要配置相关参数配置,另外需要安装好iTunes具体如下:

  • automationName:执行引擎,iOS设备需要设置为XCUITest
  • webDriverAgentUrl:iOS运行脚本中,需要配置 webDriverAgentUrl 给 appium driver ,才会不触发 appium 内置的用 xcode 启动 wda 这个流程。否则只要触发这个,appium就会找 xcode 。windows 没有 xcode ,自然跑不下去从而出现报错Error: The usbmuxd socket at '/var/run/usbmuxd' does not exist or is not accessible
  • usePrebuiltWDA:使用已经编译好的WDA这里填true
  • useXctestrunFile:使用Xctestrun文件启动WDA。由于此功能期望您已经构建了WDA项目,因此它既不会检查您是否具有必要的依赖关系来构建,WDA也不会尝试构建项目。默认为false。
  • skipLogCapture:跳过以开始捕获日志,默认为false。

PS:Windows不要忘记要安装iTunes应用。!!

运行iOS自动化

启动WDA服务,然后可以在Win使用Appium(暂没调研) 或 facebook-wda 来运行iOS自动化了。

facebook-wda需要安装:

pip3 install -U facebook-wda

官网说明及API介绍:

GitHub - openatx/facebook-wda: Facebook WebDriverAgent Python Client Library (not official)

简单实例:

wda.DEBUG=True

c=wda.USBClient()

s=c.session()

time.sleep(4)

s.app_activate("com.guokr.zaihang")

s.click(400,500)

参考网址:跨平台iOS自动化测试工具——tidevice | Sutune

Win 下成功 Appium+iOS 自动化 · TesterHome

脱离 Mac 搞 iOS 自动化,tidevice 工具教你轻松实现! · TesterHome

跨平台iOS自动化测试工具——tidevice相关推荐

  1. 芈珺:iOS自动化测试工具总览

    2019独角兽企业重金招聘Python工程师标准>>> 芈珺:iOS自动化测试工具总览 从实用性的角度,剖析常见的iOS自动化测试工具,在学会使用自动化测试工具的同时,学会工具的设计 ...

  2. 如何使用IOS自动化测试工具UIAutomation

    这篇文章主要介绍了UIAutomation使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值 第一部分: 熟悉Instruments的UIAutomation. 第二部分: 控件的获 ...

  3. Windows上实现iOS APP自动化测试:tidevice + WDA + facebook-wda / appium

    本文介绍如何在Windows下构建iOS APP自动化测试环境,采用的主要工具为tidevice,WebDriverAgent,facebook-wda或者appium. 目录 测试架构介绍 WebD ...

  4. 自动化测试工具 Java等

    Bug 跟踪工具 在项目管理工具那一篇文章中,我已经给你介绍了一些任务跟踪系统,比如说Jira.禅道.TAPD.云效等,都可以用来跟踪 Bug. Bugzilla Bugzilla 是由 Mazill ...

  5. Android 手机自动化测试工具有哪几种?

    Android 手机自动化测试工具有哪几种? 3 条评论 分享 按投票排序按时间排序 28 个回答 78赞同 反对,不会显示你的姓名 知乎用户,https://github.com/truebit 孙 ...

  6. Appnium--APP自动化测试工具

    读者提问: APP 自动化测试工具有推荐的吗 ? 阿常回答: 有,Appium. 官网地址:https://appium.io Github地址:https://github.com/appium/a ...

  7. EasyClick 易点云测 IOS版自动化测试工具

    EasyClick 易点云测 IOS版自动化测试工具 易点云测IOS版自动化测试工具 地址:EasyClick IOS 前置条件 一台MAC 或黑苹果 xcode (推荐13.1版本)编译IPA 程序 ...

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

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

  9. 盘点:App 移动自动化测试工具

    App移动端测试工具非常多,首先 区分 Android 和 iOS,以及 harmonyos 平台,每个平台下都有自己的自动化测试工具.自动化工具又区分 调试工具.monkey 工具.UI自动化工具. ...

最新文章

  1. win10中cmd如何编译和运行c/c++程序?
  2. python 日期 间隔_Python datetime time 等时间 日期 之间的计算和相互转化
  3. PHP如何用mvc,在PHP中使用MVC模式进行开发
  4. MySQL LIMIT 如何改写成Oracle limit
  5. linux ljie mysql_[Linux Mysql] Linux下Mysql的基本操作
  6. awk 实例练习 (三)
  7. 模拟Spring Security上下文进行单元测试
  8. Node.js npm 详解
  9. 反转链表-剑指offer-16
  10. MR程序的几种提交运行模式
  11. 易企秀 伪静态 linux,易企秀无法预览(伪静态配置问题)!
  12. 关于C++中的pow()函数
  13. [Swift]检查API可用性
  14. hibernate框架搭建与使用
  15. [Ubuntu 10.04]Firefox中Flash汉字乱码问题的解决
  16. 在VB语言中,DOEVENTS的具体的用法和含义
  17. ResNet50修改网络适应灰度图片并加载预训练模型
  18. mysql 触发器 模板_MySQL 触发器例子(两张表同步增加和删除)
  19. 三角函数π/2转化_【数学知识点】完整版三角函数诱导公式
  20. 【翻译】DataHub:流行的元数据架构讲解

热门文章

  1. python matplotlib searbon 设置画版颜色 热力图固定颜色等级 固定比例尺寸大小
  2. 使用 maven-semantic-release 实现自动化发版
  3. cve-2019-0192一把梭
  4. Spring @Aspect简单使用
  5. WebRTC中的信令和内网穿透技术 STUN / TURN
  6. 基于 requests 的全能扫描王爬虫实践
  7. 《银杏,银杏》原文小说
  8. 零基础学习之万物皆可GAN学习路线
  9. 读书笔记:《探索大脑的内部世界》
  10. Android Camera使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)