ToB企服应用市场:ToB评测及商务社交产业平台

标题: 基于tidevice实现iOS app主动化使用详解 [打印本页]

作者: 傲渊山岳    时间: 2024-6-21 14:23
标题: 基于tidevice实现iOS app主动化使用详解
目次
1、IOS主动化工具概述
2、tidevice工具的原理和使用
2.1、tidevice的原理
2.2、tidevice实现的功能
2.3、tidevice的安装
2.4、tidevice的使用
2.4.1、设备管理
1、检察已连接的设备的列表
2、检测设备连接状态
3、等候设备连接,只要有就连接就结束监听
4、等候指定设备连接
5、实时获取设备操作日志
6、获取设备信息
7、检察设备电源信息
8、系统信息
9、关机
10、重启设备
11、截屏生存在当前目次
12、截屏生存在指定目次
13、设备文件管理
14、应用文件管理
2.4.2、应用管理
1、安装应用
2、卸载应用
3、启动应用
4、关闭应用
5、检察已安装应用列表
2.4.4、fps 数据采集

背景:没有Mac OS设备,需要使用Windows完成iOS app主动化测试,这个过程是如何完成的呢,又是借助什么工具呢。
使用WDA框架完成iOS主动化测试见文章:使用wda框架实现IOS主动化测试详解-CSDN博客
1、IOS主动化工具概述



2、tidevice工具的原理和使用


2.1、tidevice的原理


2.2、tidevice实现的功能


2.3、tidevice的安装


   pip install -U "tidevice[openssl]" (推荐)
  
   pip install -U tidevice (缺少设备配对功能)
  
   tidevice -v
  


2.4、tidevice的使用

2.4.1、设备管理

1、检察已连接的设备的列表


   tidevice list
  
  1. from tidevice import Usbmux
  2. print(Usbmux().device_list())
复制代码
2、检测设备连接状态

说明:该功能是实时获取,已连接设备、断开设备的状态,以是运行该命令/步伐 会挂起阻塞后面的流程,如果不想阻塞后面历程,使用subprocess模块开启子历程完成监测。

   tidevice watch
  


  1. from tidevice import Usbmux
  2. for data in Usbmux().watch_device():
  3.     print(data)
复制代码
3、等候设备连接,只要有就连接就结束监听


   tidevice wait-for-device
  4、等候指定设备连接


   tidevice -u $UDID wait-for-device
  5、实时获取设备操作日志


   tidevice -u $UDID syslog
  
  1. from tidevice import Device
  2. device = Device("$UDID")
  3. # 开启 com.apple.syslog_relay服务 它的作用是用于记录系统日志
  4. socket_proxy = device.start_service("com.apple.syslog_relay")
  5. while True:
  6.     print(socket_proxy.get_socket().recv(1024).decode('utf-8'))
复制代码
6、获取设备信息


   tidevice info
  
  1. from tidevice import Device
  2. print(Device("$UDID").device_info())
复制代码
7、检察设备电源信息


   tidevice info --domain com.apple.mobile.battery --json
  
  1. from tidevice import Device
  2. import json
  3. domain_info = Device("$UDID").device_info("com.apple.mobile.battery")
  4. print(json.dumps(domain_info))
复制代码
8、系统信息


   tidevice sysinfo
  
  1. from tidevice import Device
  2. Device("$UDID").instruments.system_info()
复制代码
9、关机


   tidevice shutdown
  
  1. from tidevice import Device
  2. Device("$UDID").shutdown()
复制代码
10、重启设备


   tidevice reboot
  
  1. from tidevice import Device
  2. Device("$UDID").reboot()
复制代码
11、截屏生存在当前目次


   tidevice screenshot
  
  1. from tidevice import Device
  2. filename = "screenshot.jpg"
  3. Device("$UDID").screenshot().convert("RGB").save(filename)
复制代码
12、截屏生存在指定目次


   tidevice screenshot /xxx/xxx/screenshot.png
  
  1. from tidevice import Device
  2. file_path = "/xxx/xxx/screenshot.png"
  3. Device("udid").screenshot().convert("PNG").save(file_path)
复制代码
13、设备文件管理


   tidevice -u $UDID fsync
  
  以下是一些常见的文件同步操作及其对应的命令和参数示例:
列出指定路径下的文件: tidevice fsync ls /path/to/directory
删除文件: tidevice fsync rm /path/to/file
检察文件内容: tidevice fsync cat /path/to/file
将文件从设备上拉取到当地: tidevice fsync pull /path/to/device/file /path/to/local/destination
将文件推送到设备上: tidevice fsync push /path/to/local/file /path/to/device/destination
检察文件或目次的具体信息: tidevice fsync stat /path/to/file_or_directory
列出指定路径下的文件和目次树: tidevice fsync tree /path/to/directory
  
  1. from tidevice import Device
  2. # 示例:获取目录"/"下的文件信息
  3. print(Device("$UDID").sync.listdir_info("/"))
复制代码
14、应用文件管理


   tidevice -u $UDID fsync -B bundle_id
  
  该命令需要提供两个参数:command 和 arguments。
command:指定要执行的文件同步操作,如 ls、rm、cat 等。
arguments:根据所选的文件同步操作,提供相应的参数。
  
  以下是一些常见的文件同步操作及其对应的命令和参数示例:
列出指定路径下的文件: tidevice fsync -B com.king.Money ls /path/to/directory
删除文件: tidevice fsync -B com.king.Money rm /path/to/file
检察文件内容: tidevice fsync -B com.king.Money cat /path/to/file
将文件从设备上拉取到当地: tidevice fsync -B com.king.Money pull /path/to/device/file /path/to/local/destination
将文件推送到设备上: tidevice fsync -B com.king.Money push /path/to/local/file /path/to/device/destination
检察文件或目次的具体信息: tidevice fsync -B com.king.Money stat /path/to/file_or_directory
列出指定路径下的文件和目次树: tidevice fsync -B com.king.Money tree /path/to/directory
  
  1. from tidevice import Device
  2. # 示例:获取目录"/"下的文件信息
  3. print(Device("$UDID").app_sync(bundle_id).listdir_info("/"))
复制代码
2.4.2、应用管理

1、安装应用


   tidevice --udid $UDID install file_or_url
  或
  tidevice -u $UDID install file_or_url
  
  1. from tidevice import Device
  2. device = Device("$UDID")
  3. device.app_install(file_or_url)
复制代码
2、卸载应用


   tidevice --udid $UDID uninstall bundle_id
  
  1. from tidevice import Device
  2. device = Device("$UDID")
  3. device.app_uninstall(bundle_id)
复制代码
3、启动应用


   tidevice --udid $UDID launch bundle_id
  

4、关闭应用


   tidevice --udid &UDID kill pid_or_name
  
  1. from tidevice import Device
  2. Device("$UDID").app_stop(pid_or_name)
复制代码
5、检察已安装应用列表


   # 检察指定设备的应用列表
tidevice --udid &UDID applist
# 只有一个设备连接的情况,可直接检察
tidevice applist
  
  1. from tidevice import Device
  2. device = Device("$UDID")
  3. # 结果包含设备上全部的应用信息;包括用户应用('Type': 'User'),系统应用('Type': 'System'),插件('Type': 'PluginKit')
  4. apps = device.connect_instruments().app_list()
复制代码
6、获取指定应用详情应用信息

   tidevice appinfo bundle_id
  
  1. from tidevice import Device
  2. device = Device("$UDID")
  3. app_info = device.installation.lookup(bundle_id)
  4. print(app_info)
复制代码
2.4.3、执行主动化测试

1、启动WebDriverAgent服务

   tidevice wdaproxy -B WebDriverAgent_bundle_id --port 8100
  
  # 指定设备启动WebDriverAgent tidevice -u &UDID wdaproxy -B WebDriverAgent_bundle_id --port 8100
  
2.4.4、fps 数据采集


   tidevice dumpfps
  
  1. from tidevice import Device
  2. device = Device("$UDID")
  3. for data in device.connect_instruments().iter_opengl_data():
  4.     print(data)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4