1. 前言

大家好,我是安果!

最近,阿里内部开源了一个 iOS 端由 Python 编写的自动化工具,即:tidevice

它是一款跨平台的自动化开源工具,不依赖 Xcode 就可以启动 WebDriverAgent( WDA ),这也就意味着 Windows 可以直接运行 iOS 自动化脚本

项目地址:

https://github.com/alibaba/taobao-iphone-device

2. 准备

进入到虚拟环境,先安装 tidevice 的依赖包

# 安装依赖包
pip3 install -U "tidevice[openssl]" # 查看tidevice版本,检查是否安装成功
tidevice version

3. 常见功能

将 iPhone 设备连接到电脑上,就可以使用 tidevice 提供的功能了

3-1  查看设备列表

# 二选一
tidevice list # json数据显示
tidevice list --json

3-2  安装、卸载应用

安装对应的关键字为:「 install 」

tidevice 同时支持安装本地 ipa 包和远链下的 ipa 应用包

另外,tidevice 可以使用「 --udid 」参数将应用安装到某一台设备中

# 安装本地应用
tidevice install example.ipa # 根据udid参数,指定设备安装应用
tidevice --udid $UDID install https://example.org/example.ipa
tidevice install https://.....ipa

卸载对应的关键字为:「 uninstall 」

通过应用包名可以卸载设备上的某一个应用

# 卸载应用(通过包名)
# 比如:知识星球App包名为:com.unnoo.quan
tidevice uninstall com.unnoo.quan

3-3  启动、关闭应用

启动应用对应的关键字为:「 launch 」

关闭应用对应的关键字为:「 kill 」

# 打开应用
tidevice launch com.unnoo.quan # 停止杀死应用
tidevice kill com.unnoo.quan

3-4  已安装应用及名称、版本

使用「 tidevice applist 」命令,可以查看设备上已经安装的应用、应用名称、应用版本号

# 查看设备应用信息列表
localhost:tidevice_demo xingag$ tidevice applist
com.tencent.xin WeChat 8.0.2
com.ss.iphone.ugc.Aweme 抖音 13.4.0
com.tencent.mttlite QQ浏览器 10.8.3
com.panasonic.jp.imageapp Image App 1.10.17
com.unnoo.quan 知识星球 4.20.2
co.visualsupply.cam VSCO 189
com.ucweb.iphone.lowversion UC浏览器 13.1.5
com.niksoftware.snapseedforipad Snapseed 2.19.5
com.autonavi.amap 高德地图 10.76.0
com.lagou.education 拉勾教育 1.4.9
com.xunmeng.pinduoduo 拼多多 5.37.0
com.tencent.QQMusic QQ音樂 10.5.5
io.ideamp.feelcab Feelca B 1.6.0
com.chinaunicom.mobilebusiness 手机营业厅 8.00.01
com.feiyu-tech.vico Vicool 1.2.26
com.ss.iphone.article.News 今日头条 7.9.3
com.sogou.sogouinput 搜狗输入法 10.18.1
org.geekbang.GeekTime 极客时间 2.9.2
com.burbn.hyperlapse Hyperlapse 1.3.4
com.apple.itunesu iTunes U 3.8

3-5  设备信息

利用「 tidevice info 」可以查看设备信息,比如:设备序列号、系统版本、CPU、本机号码、时间戳、蓝牙地址、MAC 地址等信息

# 查看设备信息
localhost:~ xingag$ tidevice info
MarketName: iPhone SE (1st generation)
DeviceName: xingag
ProductVersion: 14.4
ProductType: iPhone8,4
ModelNumber: MP892
SerialNumber: ...
CPUArchitecture: arm64
ProductName: iPhone OS
ProtocolVersion: 2
RegionInfo: ZP/A
TimeIntervalSince1970: 1616979424.235399
TimeZone: Asia/Shanghai
WiFiAddress: 58:e2:8f:68:4c:b0
BluetoothAddress: 58:e2:8f:68:4c:b1
BasebandVersion: 10.40.01
...

如果要查看设备的电池信息,可以使用关键字 「 --domain + 应用包名 」来获取

# 查看设备电池信息
localhost:~ xingag$ tidevice info --domain com.apple.mobile.battery --json
{
"BatteryCurrentCapacity": 54,
"BatteryIsCharging": true,
"ExternalChargeCapable": true,
"ExternalConnected": true,
"FullyCharged": false,
"GasGaugeCapability": true,
"HasBattery": true
}

3-6  重启及截图

重启对应的关键字为:「 reboot 」

截图对应的关键字为:「 screenshot 」

# 重启设备
tidevice reboot # 截图并保存到文件 screenshot.jpg 中
tidevice screenshot screenshot.jpg

3-7  系统日志及更多帮助

查看系统日志的命令为:「 tidevice syslog 」,当然也可以配置 grep 参数进行过滤

# 查看系统日志
tidevice syslog # 更多帮助
tidevice -h

4. 自动化步骤

要完成 iOS 端的自动化,我们还需要做一些准备工作

4-1 安装 WDA

我们需要将 WebDriverAgent 安装到 iOS 设备上,通过它驱动手机进行一系列自动化操作

PS:由于 Facebook WDA 很长时间没有更新了,这里建议直接使用 Appium WDA

https://github.com/appium/WebDriverAgent

下载项目后,使用 Xcode 打开,Scheme 选择 WebDriverAgentRunner,设备选择真机

然后配置开发者证书,可以参考下面链接进行配置

https://testerhome.com/topics/7220

最后,Xcode 选择 Project 下的 Test 将项目运行到真机设备上

注意:第一次运行 WDA 可能运行失败,需要手动在设置中对证书添加信任

4-2  运行 WDA

真机设备安装完 WDA 后,就可以脱离 Mac,使用 Windows 进行自动化操作了

使用「 tidevice wdaproxy 」命令可以运行 WDA 和端口转发

# 运行 WDA
# 端口转发到8100
# 应用包名:com.facebook.WebDriverAgentRunner.xingag23.xctrunner
idevice wdaproxy -B com.facebook.WebDriverAgentRunner.xingag23.xctrunner --port 8100

PS:由于 Xcode 设置证书的时候,更改过 bundle_id,所以这里的包名是一个变量

4-3  编写自动化脚本

接下来,就可以使用 Appium 或 facebook-wda 编写脚本并运行到 iOS 设备上了

以 facebook-wda 为例

首先,我们安装对应的依赖

# 安装facebook-wda依赖
pip3 install -U facebook-wda

接着,编写自动化脚本并运行测试

import wda
import time # 连接设备
c1 = wda.USBClient() # c1 = wda.Client("http://10.3.209.175:8100")
print(c.info) # 极客时间
bundle_id = 'org.geekbang.GeekTime' # 通过app的bundleId启动App
s = c1.session(bundle_id) # 休眠5s
s.sleep(5) # 截图保存到本地
c1.screenshot('sc.png') # 回到桌面
s.home()

5. 最后

阿里这款 iOS 端自动化工具的主要优点是启动速度快,内存占用低;更重要的是,它是跨平台,稳定性相对较高

更多 Python 自动化、爬虫相关的技术干货,可以关注公众号「 AirPython 」来解锁!

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

阿里最强 Python 自动化工具开源了!的更多相关文章

  1. 微软最强 Python 自动化工具开源了!不用写一行代码!

    1. 前言 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python 它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft E ...

  2. python自动化工具之pywinauto(一个实例)结合pyuserinput

    以下是pywinauto使用指南.这个窗口句柄可以在Spy++中查看 (Microsoft Spy++(查看窗口句柄) 10.00.30319 官方最新绿色版) python自动化工具之pywinau ...

  3. python自动化工具

    公司有些业务不断的重复复制和黏贴实在让人头疼,于是乎考虑使用python自动的生成文件,并且替换文件中的一些内容,把需要复制和黏贴的内容制作成 模版,以后的开发工作可以根据模版来自动生成文件,自己以后 ...

  4. 推荐一款最强Python自动化神器!不用写一行代码!

    搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: selenium.结合标准的WebDriver API来编写Python自动化脚本,可以实现解放双手,让脚本代替人 ...

  5. 前端开发福音!阿里Weex跨平台移动开发工具开源-b

    阿里巴巴今天在Qcon大会上宣布跨平台移动开发工具Weex开放内测邀请.Weex能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS.安卓.YunOS及 ...

  6. 推荐一款最强Python自动化神器!再也不用写代码了!

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 搞过自动化测试的小伙伴,相信都知道,在Web自动化测试中,有一款自动化测试神器工具: seleniu ...

  7. 自动化工具之三:pywinauto

    Python自动化工具:pywinauto 一.pywinauto的安装 (1)安装命令 pip install -U pywinauto/pip3 install -U pywinauto (2)验 ...

  8. 测试开发:推荐一款阿里最新 Python 自动化开源工具!

    大家好,我是麦小米,是狂师老师全栈测开训练营中的一名学员. 如果之前做过iOS自动化的同学相信都知道,一直以来,iOS自动化的实现&执行都必须依赖 Mac 系统,其主要原因是因为需要通过 xc ...

  9. CheungSSH国产自动化运维工具开源Web界面

    CheungSSH web2.0 发布文档 CheungSSH 简介 CheungSSH是一款国人自主研发的Linux运维自动化管理服务器软件,秉着为企业降低运营成本,解放管理员双手和自动化生产的理念 ...

随机推荐

  1. CSS 实现文本的竖向排版

    CSS 实现文本的竖向排版 demos .text{ word-wrap: break-word; width: 0px; } writing-mode .text{ writing-mode: ve ...

  2. scrapy 运行逻辑

    爬虫的步骤:发送请求获得响应→解析并提取数据→保存数据 我们沿用这个朴素的逻辑去理解scrapy 一.发送请求获得响应 1.爬虫发送请求request到引擎 2.引擎将请求request传递给调度器s ...

  3. JS把数组元素分组

    有一个数组,把其中的元素按照每5个进行重新分组,新的数组放到放到大数组中,且看代码 let data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, ...

  4. 痞子衡嵌入式:系统时钟配置不当会导致i.MXRT1xxx系列下OTFAD加密启动失败

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是系统时钟配置不当会导致i.MXRT1xxx系列下OTFAD加密启动失败问题. 我们知道,i.MXRT1xxx家族早期型号(RT1050/ ...

  5. Go的指针

    目录 指针 一.指针的声明 二.指针的默认值(Zero Value) 三.指针的解引用 四.向函数传递指针参数 1.非 数组/切片 指针传参 2.数组/切片 指针传参 五.Go不支持指针运算 指针 指 ...

  6. 五. SpringCloud服务降级和熔断

    1. Hystrix断路器概述 1.1 分布式系统面临的问题 复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败.这就造成有可能会发生服务雪崩.那么什么是服务雪崩呢 ...

  7. GDB调试:从入门到入土

    GDB是类Unix操作糸统下使用命令行调试的调试软件,全名GNU Debugger,在NOI系列竞赛使用的NOI Linux系统中起很大作用(如果不想用毒瘤Guide或直接输出)(XXX为文件名) 1 ...

  8. 一文讲通.NET Core部署到Windows IIS最全解决方案

    回顾之前的ASP.NET的经典托管 在经典ASP.NET应用程序中,所有一切都托管在IIS工作进程中(w3wp.exe),这也被称为IIS应用程序池.ASP.NET程序被托管在应用程序池中,并且被按照 ...

  9. 关于Laravel框架中Guard的底层实现

    1. 什么是Guard 在Laravel/Lumen框架中,用户的登录/注册的认证基本都已经封装好了,开箱即用.而登录/注册认证的核心就是: 用户的注册信息存入数据库(登记) 从数据库中读取数据和用户 ...

  10. 剑指 Offer 42. 连续子数组的最大和 + 动态规划

    剑指 Offer 42. 连续子数组的最大和 题目链接 状态定义: 设动态规划列表 \(dp\) ,\(dp[i]\) 代表以元素 \(4nums[i]\) 为结尾的连续子数组最大和. 为何定义最大和 ...