跨平台iOS自动化测试工具——tidevice
前言
一直以来,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相关推荐
- 芈珺:iOS自动化测试工具总览
2019独角兽企业重金招聘Python工程师标准>>> 芈珺:iOS自动化测试工具总览 从实用性的角度,剖析常见的iOS自动化测试工具,在学会使用自动化测试工具的同时,学会工具的设计 ...
- 如何使用IOS自动化测试工具UIAutomation
这篇文章主要介绍了UIAutomation使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值 第一部分: 熟悉Instruments的UIAutomation. 第二部分: 控件的获 ...
- Windows上实现iOS APP自动化测试:tidevice + WDA + facebook-wda / appium
本文介绍如何在Windows下构建iOS APP自动化测试环境,采用的主要工具为tidevice,WebDriverAgent,facebook-wda或者appium. 目录 测试架构介绍 WebD ...
- 自动化测试工具 Java等
Bug 跟踪工具 在项目管理工具那一篇文章中,我已经给你介绍了一些任务跟踪系统,比如说Jira.禅道.TAPD.云效等,都可以用来跟踪 Bug. Bugzilla Bugzilla 是由 Mazill ...
- Android 手机自动化测试工具有哪几种?
Android 手机自动化测试工具有哪几种? 3 条评论 分享 按投票排序按时间排序 28 个回答 78赞同 反对,不会显示你的姓名 知乎用户,https://github.com/truebit 孙 ...
- Appnium--APP自动化测试工具
读者提问: APP 自动化测试工具有推荐的吗 ? 阿常回答: 有,Appium. 官网地址:https://appium.io Github地址:https://github.com/appium/a ...
- EasyClick 易点云测 IOS版自动化测试工具
EasyClick 易点云测 IOS版自动化测试工具 易点云测IOS版自动化测试工具 地址:EasyClick IOS 前置条件 一台MAC 或黑苹果 xcode (推荐13.1版本)编译IPA 程序 ...
- iOS自动化测试辅助工具--Reveal配置及使用
iOS自动化测试中,最关键的问题就是UI控件元素的识别,Xcode中的UIAutomation可以辅助做这个工作,但是使用时,需要启动Instrument,并启动录制脚本,比较麻烦. 下面为大家介绍另 ...
- 盘点:App 移动自动化测试工具
App移动端测试工具非常多,首先 区分 Android 和 iOS,以及 harmonyos 平台,每个平台下都有自己的自动化测试工具.自动化工具又区分 调试工具.monkey 工具.UI自动化工具. ...
最新文章
- win10中cmd如何编译和运行c/c++程序?
- python 日期 间隔_Python datetime time 等时间 日期 之间的计算和相互转化
- PHP如何用mvc,在PHP中使用MVC模式进行开发
- MySQL LIMIT 如何改写成Oracle limit
- linux ljie mysql_[Linux Mysql] Linux下Mysql的基本操作
- awk 实例练习 (三)
- 模拟Spring Security上下文进行单元测试
- Node.js npm 详解
- 反转链表-剑指offer-16
- MR程序的几种提交运行模式
- 易企秀 伪静态 linux,易企秀无法预览(伪静态配置问题)!
- 关于C++中的pow()函数
- [Swift]检查API可用性
- hibernate框架搭建与使用
- [Ubuntu 10.04]Firefox中Flash汉字乱码问题的解决
- 在VB语言中,DOEVENTS的具体的用法和含义
- ResNet50修改网络适应灰度图片并加载预训练模型
- mysql 触发器 模板_MySQL 触发器例子(两张表同步增加和删除)
- 三角函数π/2转化_【数学知识点】完整版三角函数诱导公式
- 【翻译】DataHub:流行的元数据架构讲解
热门文章
- python matplotlib searbon 设置画版颜色 热力图固定颜色等级 固定比例尺寸大小
- 使用 maven-semantic-release 实现自动化发版
- cve-2019-0192一把梭
- Spring @Aspect简单使用
- WebRTC中的信令和内网穿透技术 STUN / TURN
- 基于 requests 的全能扫描王爬虫实践
- 《银杏,银杏》原文小说
- 零基础学习之万物皆可GAN学习路线
- 读书笔记:《探索大脑的内部世界》
- Android Camera使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)