在兼容性测试中,需要在众多手机中安装待测 apk,设计思路使用 adb 命令安装 apk,达到 usb 插入手机后就能自动安装
1、使用 adb devices 命令,采取多线程查找插入手机,获取手机 udid,
2、然后使用 adb udid install -r +apk 安装软件
备注:手机需要设置成可调试
#codeing=utf-8
# FUNCTION module
#return phone info udid[] or False
import os
import re
def getPhoneInfo():
dviceUdid = []
os.system('adb devices > devices.txt')
fp = open('devices.txt', 'r+')
text = fp.readlines()
print text
for el in text[1:-1]:
list = re.split('\\t',el)
dviceUdid.append(list[0])
if len(dviceUdid) == 0:
return False
return dviceUdid
安装代码
#codeing=utf-8
import os
import re
import threading
import sys
import Function
import time
#用来安装apk线程
class InstallApk(threading.Thread):
def __init__(self, udid, arrayApkPackage):
threading.Thread.__init__(self)
self.udid = udid
self.arrayApkPackage = arrayApkPackage
def run(self):
for apkPackage in self.arrayApkPackage:
os.system('adb -s '+self.udid+' install -r '+apkPackage)
class FindDevice(threading.Thread):
def __inti__(self):
threading.Thread.__init__(self)
def run(self):
arrayDev = []
arrayApkPackage = ['C:\Python27\xxx.apk', 'C:\Python27\xxxxx.apk'];
while True:
phoneInfo = Function.getPhoneInfo()
if phoneInfo == False:
time.sleep(1)
continue
for udid in phoneInfo:
#将测试过设备保存在arrayDev,防止安装后设备没有拔出而重复安装
if udid in arrayDev:
continue
InstallApk(udid, arrayApkPackage).start()
arrayDev.append(udid)
#如果保存设备超过10个则清空,视个人情况而定
if len(arrayDev) > 10:
arrayDev.clear()
time.sleep(5)
FindDevice().start()