基本封装了Android常用的命令,IOS部分暂时没有支持太多,等后期慢慢维护
使用方法
from device_command import Device
#获取android设备列表
android_device_list = Device.get_android_devices()
ios_device_list = Device.get_ios_devices()
整体代码
# -*- coding: utf-8 -*
import os
import sys
import platform
import subprocess
import getopt
import re
"""
python3 reduce函数需要单独引入
"""
try:
from functools import reduce
except:
pass
"""
获取ios和android设备列表的常用命令封装,兼容window linux 和 mac
ios设备列表需要安装依赖
"""
class Shell:
def __init__(self):
pass
@staticmethod
def invoke(cmd):
output, errors = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
o = output.decode("utf-8")
return o
# 判断系统类型,windows使用findstr,linux使用grep
system = platform.system()
if system is "Windows":
find_util = "findstr"
else:
find_util = "grep"
# 判断是否设置环境变量ANDROID_HOME
if "ANDROID_HOME" in os.environ:
if system == "Windows":
command = os.path.join(os.environ["ANDROID_HOME"], "platform-tools", "adb.exe")
else:
command = os.path.join(os.environ["ANDROID_HOME"], "platform-tools", "adb")
else:
print("Adb not found in $ANDROID_HOME path")
class ADB(object):
"""
参数: device_id
"""
def __init__(self, device_id=""):
if device_id == "":
self.device_id = ""
else:
self.device_id = "-s %s" % device_id
def adb(self, args):
cmd = "%s %s %s" % (command, self.device_id, str(args))
return Shell.invoke(cmd)
def shell(self, args):
cmd = "%s %s shell %s" % (command, self.device_id, str(args),)
return Shell.invoke(cmd)
def get_device_state(self):
"""
获取设备状态: offline | bootloader | device
"""
return self.adb("get-state").stdout.r