tidevice 是阿里的内部的一个小组用来做 iOS 自动化用的工具。最近终于开源了出来。
所以这篇文章就来介绍一下这款工具。
项目地址 https://github.com/alibaba/taobao-iphone-device,请先点个 Star ,然后回来在看。
它有什么功能呢?
这个工具是纯 Python 写成的,所以也是跨平台的。也就是可以在能跑起来 Python 的 Windows、Linux、Mac 上运行。
其中网上最难找的应该是这个如何不依赖 xcode 启动 WebDriverAgent,这个工具就可以做到,原理的话可以翻源码。因为不依赖 Xcodebuild,所以就算你只有 Windows 或者 Linux 也能跑起来 iOS 自动化。
截止到发稿日期 2021/01/27,支持 iOS 手机的范围是 9.0-14.0
该工具是用 Python 写的,依赖 Python3.6+
安装方法
pip3 install -U tidevice
# 查看所有连接上的设备
$ tidevice list
List of apple devices attached
1234567892d8372eb752f413280722cdcc200954 iPhoneSE
# 截图
tidevice screenshot screenshot.jpg
# 启动苹果设置
tidevice launch com.apple.Preferences
# 查看已安装的第三方应用
tidevice applist
本来想录个视频的,但是 Windows 电脑还要去借,太麻烦了。就不录视频了。反正你知道 Windows 能跑就行。
第一步用数据线将 iPhone 手机连接到 PC 上,另外还需要手机上已经有WebDriverAgent这个 App 了。这个可以通过 xcode 编译源码安装,也可以用开发者证书重签名的 WebDriverAgent.ipa 安装到手机。
WebDriverAgent.ipa 在项目的 tests/testdata 目录下可以找到我之前打包好的。
启动就是一个命令 tidevice xctest
或者指定执行设备和 bundleId tidevice -u $UDID xctest -B $BUNDLE_ID
需要运行运行自动化的话,可以直接用 facebook-wda
或者用 iproxy 8100 8100
将服务映射出来用 Appium 或其他自动化框架连接也可以。
我觉的这种方式的优点
tidevice applist
tidevice reboot
tidevice screenshot
tidevice info
tidevice install https://.....ipa
更多功能参考
tidevice -h
我怕你忘记点 ,这里再贴一遍 https://github.com/alibaba/taobao-iphone-device
PS: 本小组正在招人,欢迎投递简历并留言。https://testerhome.com/topics/23010
可以过滤掉 network 连接的设备以及 列出模拟器的设备吗?
List of apple devices attached
XXXXX phone5 12.5.3 network
XXXXX iPhone 11 Pro Max(14.4) QA 14.4 network
Traceback (most recent call last):
File "xxxx/venv/bin/tidevice", line 8, in
sys.exit(main())
File "xxxx/venv/lib/python3.7/site-packages/tidevice/main.py", line 813, in main
actionsargs.subparser
File "xxxx/venv/lib/python3.7/site-packages/tidevice/main.py", line 83, in cmd_list
name = _d.name
File "xxxx/venv/lib/python3.7/site-packages/tidevice/_device.py", line 551, in name
return self.get_value("DeviceName", no_session=True)
File "xxxx/venv/lib/python3.7/site-packages/tidevice/_device.py", line 397, in get_value
return ret['Value']
KeyError: 'Value'
请教大佬,执行语句
c=wda.USBClient()
出现报错:
raise RuntimeError("wda xctest launched but check failed")
不知道怎么解决呢?是我 wda 没搭好么?
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
该问题已解决,需要安装 itunes
File "c:\users\lidy307\appdata\local\programs\python\python37\lib\site-packages\tidevice_usbmux.py", line 42, in create_connection
return PlistSocket(self.address, self._next_tag())
File "c:\users\lidy307\appdata\local\programs\python\python37\lib\site-packages\tidevice_safe_socket.py", line 92, in __init
super().init(addr)
File "c:\users\lidy307\appdata\local\programs\python\python37\lib\site-packages\tidevice_safe_socket.py", line 48, in init
self._sock.connect(addr)
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
tidevice list 报错,怎么解决?
wda 打出来的 ipa 包会占用开发者帐号 ios 手机数量的限制吗?
争取实现 ip 连接,就跟 adb 一样强大了
好工具,收藏
tidevice 启动 wda 后,有没有发现通过 wda 的接口去启动 app 很慢,有时候需要好几分钟
安装时候也遇到一楼的错误了
C:\Users\Administrator>tidevice install D:\test_1111.ipa
Traceback (most recent call last):
File "e:\python36\lib\runpy.py", line 193, in run_module_as_main
"main", mod_spec)
File "e:\python36\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "E:\python36\Scripts\tidevice.exe__main.py", line 7, in
File "e:\python36\lib\site-packages\tidevice__main.py", line 416, in main
actionsargs.subparser
File "e:\python36\lib\site-packages\tidevice__main_.py", line 120, in cmd_in
stall
bundle_id = d.app_install(args.filepath_or_url)
File "e:\python36\lib\site-packages\tidevice_device.py", line 684, in app_ins
tall
bundle_id = ir.get_bundle_id()
File "e:\python36\lib\site-packages\tidevice_ipautil.py", line 57, in get_bun
dle_id
return self.get_infoplist()['CFBundleIdentifier']
File "e:\python36\lib\site-packages\tidevice_ipautil.py", line 53, in get_inf
oplist
return bplist.load(fp)
File "e:\python36\lib\site-packages\tidevice\plistlib2.py", line 966, in load
fp.seek(0)
io.UnsupportedOperation: seek
这是为什么?
简介有点太简单了,可以把那个开源分享的帖子内容直接贴过来?