在兼容性测试中,需要在众多手机中安装待测 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()


↙↙↙阅读原文可查看相关链接,并与作者交流