软件测试之ios自动化——ios真机命令

在做自动化的过程中,通常绕不开真机命令对apk进行安装,卸载,启动等常用功能,在android里我们通常使用adb命令,在ios里我们通常使用idevicexxx系列命令。这里主要介绍一下ios的真机命令,参考文章ios真机命令

1、获取设备的UDID

  • idevice_id --list # 显示当前所连接设备的 udid
  • instruments -s devices # 列出所有设备,包括真机、模拟器、mac
  • ideviceinfo 可以在返回的数据中找到 udid
  • idevice_id -l
  • 苹果手机 safari打开网址http://fir.im/udid 就看到了

2、安装某个app

  • ideviceinstaller -i apppath 安装apppath下的app
  • ideviceinstaller -u [udid] -i [xxx.ipa] # xxx.ipa 为应用在本地的路径

3、卸载应用

  • ideviceinstaller -u [udid] -U [bundleId]

4、查看设备已安装的应用

  • ideviceinstaller -u [udid] -l # 查看设备安装的第三方应用
  • ideviceinstaller -u [udid] -l -o list_user # 同上,查看设备安装的第三方应用
  • ideviceinstaller -u [udid] -l -o list_system # 查看设备安装的系统应用
  • ideviceinstaller -u [udid] -l -o list_all # 查看设备安装的所有应用

5、获取设备信息

  • ideviceinfo -u [udid] # 获取设备信息
  • ideviceinfo -u [udid] -k DeviceName # 获取设备名称 同命令 idevicename
  • idevicename # 同上
  • ideviceinfo -u [udid] -k ProductVersion # 获取设备版本 10.3.3
  • ideviceinfo -u [udid] -k ProductType # 获取设备类型 iPhone 8,1
  • ideviceinfo -u [udid] -k ProductName # 获取设备系统名称

6、其他系统文件信息

  • ideviceinfo # 获取设备所有信息
  • idevicesyslog # 获取设备日志
  • idevicecrashreport -e test # 获取设备 crashlog,test 是文件夹需新建
  • idevicediagnostics # 管理设备状态 - 重启、关机、睡眠等

7、ios-deploy 常用命令

  • ios-deploy -c # 查看当前链接的设备
  • ios-deploy --[xxx.app] # 安装APP
  • ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId] # 卸载应用
  • ios-deploy --id [udid] --list_bundle_id # 查看所有应用
  • ios-deploy --id [udid] --exists --bundle_id # 查看应用是否安装

8、列举设备安装的应用:

  • ideviceinstaller -l #列出手机上所有的用户安装的app

9、运行某个app

  • idevicedebug run ‘APP_BUNDLE_ID’ #直接launch某个app,当然,这个app必须是你通过development证书build到手机上的才行。

10、获取手机的设备版本:

  • Ideviceinfo -k ProductVersion

11、获取手机的设备名:

  • ideviceinfo -k ProductType

12、截图:

  • idevicescreenshot

13、录像:

  • xrecord --quicktime --list
  • xrecord --quicktime --name=“iPhone” --out="/Users/blah/video/iphone.mp4" --force

14、手机关机

  • idevicediagnostics shutdown # shutdown device

15、重启手机

  • idevicediagnostics restart # restart device

16、休眠(熄屏灭屏)

  • idevicediagnostics sleep # 类似于断开adb . (disconnects from host)

知道上面这些命令以后,通常我们会写自动化脚本来使用这些命令,下面列举一个使用以上命令进行monkey保活的脚本供大家参考

# -*- coding: utf-8 -*-

from utils.logPrint import LogPrint
from utils.devices import devices
import subprocess
import os

class MonkeyRunner:

    def __init__(self,product_bundle_id = 'com.tencent.abcmouseqq'):
        # 产品的 product_bundle_id
        self.product_bundle_id = product_bundle_id
        # 日志函数初始化
        self.log = LogPrint()
        # 黑名单初始化
        self.black_udid = []
        # 设备信息初始化
        self.device = devices()



    def startRunner(self):

        self.log.log_print(tag="遍历所有手机 monkey 保活")

        devices_number = subprocess.check_output("/usr/local/bin/idevice_id -l | wc -l", shell=True)

        for i in range(0,int(devices_number)) :
            udid = subprocess.check_output("/usr/local/bin/idevice_id -l | awk 'NR==%i{print $1}'" % (i + 1), shell=True).strip("\n")

            if udid in self.black_udid:
                continue

            self.log.log_print(tag="在%s(%s)的设备上开始启动应用" % (udid, self.device.getDevicesName(udid)))

            subprocess.Popen("/usr/local/bin/idevicedebug run %s -u %s" % (self.product_bundle_id, udid), shell=True,
                             stdout=subprocess.PIPE)

            self.log.log_print(tag="在%s(%s)的设备上结束启动结束" % (udid, self.device.getDevicesName(udid)))



if __name__ == '__main__':

    runner = MonkeyRunner(product_bundle_id='com.lxw.abcmousedev')
    runner.startRunner()

参考文章

1、https://www.cnblogs.com/xiyuan2016/p/9929814.html
2、https://blog.csdn.net/yxys01/article/details/73549475

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值