阿里最强 Python 自动化工具开源了!

进击的Coder

以下文章来源于AirPython ,作者星安果

AirPython专注于Python爬虫/自动化/Web原创技术干货!

这是「进击的Coder」的第 376 篇技术分享
作者:星安果
来源:AirPython

阅读本文大概需要 10 分钟。

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.ipatidevice install https://.....ipa

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

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

# 卸载应用(通过包名)# 比如:知识星球App包名为:com.unnoo.quantidevice 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 applistcom.tencent.xin WeChat 8.0.2com.ss.iphone.ugc.Aweme 抖音 13.4.0com.tencent.mttlite QQ浏览器 10.8.3com.panasonic.jp.imageapp Image App 1.10.17com.unnoo.quan 知识星球 4.20.2co.visualsupply.cam VSCO 189com.ucweb.iphone.lowversion UC浏览器 13.1.5com.niksoftware.snapseedforipad Snapseed 2.19.5com.autonavi.amap 高德地图 10.76.0com.lagou.education 拉勾教育 1.4.9com.xunmeng.pinduoduo 拼多多 5.37.0com.tencent.QQMusic QQ音樂 10.5.5io.ideamp.feelcab Feelca B 1.6.0com.chinaunicom.mobilebusiness 手机营业厅 8.00.01com.feiyu-tech.vico Vicool 1.2.26com.ss.iphone.article.News 今日头条 7.9.3com.sogou.sogouinput 搜狗输入法 10.18.1org.geekbang.GeekTime 极客时间 2.9.2com.burbn.hyperlapse Hyperlapse 1.3.4com.apple.itunesu iTunes U 3.8

3-5  设备信息

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

# 查看设备信息localhost:~ xingag$ tidevice infoMarketName:       iPhone SE (1st generation)DeviceName:       xingagProductVersion:   14.4ProductType:      iPhone8,4ModelNumber:      MP892SerialNumber:     ...CPUArchitecture:  arm64ProductName:      iPhone OSProtocolVersion:  2RegionInfo:       ZP/ATimeIntervalSince1970: 1616979424.235399TimeZone:         Asia/ShanghaiWiFiAddress:      58:e2:8f:68:4c:b0BluetoothAddress: 58:e2:8f:68:4c:b1BasebandVersion:  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.xctrunneridevice 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 wdaimport time

# 连接设备c1 = wda.USBClient()

# c1 = wda.Client("http://10.3.209.175:8100")print(c.info)

# 极客时间bundle_id = 'org.geekbang.GeekTime'

# 通过app的bundleId启动Apps = c1.session(bundle_id)

# 休眠5ss.sleep(5)

# 截图保存到本地c1.screenshot('sc.png')

# 回到桌面s.home()

5. 最后

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

End

不看的原因确定内容质量低不看此公众号
(0)

相关推荐