写点什么

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

用户头像
星安果
关注
发布于: 2021 年 04 月 08 日
阿里最强 Python 自动化工具开源了!

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 端自动化工具的主要优点是启动速度快,内存占用低;更重要的是,它是跨平台,稳定性相对较高


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


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

发布于: 2021 年 04 月 08 日阅读数: 345
用户头像

星安果

关注

还未添加个人签名 2019.03.27 加入

公众号:AirPython,分享 Python 爬虫、自动化原创技术干货!

评论

发布
暂无评论
阿里最强 Python 自动化工具开源了!