1. 程式人生 > 實用技巧 >Python+APPIUM UI自動化程式碼獲取裝置資訊:devicesId、deviceName、platformVersion以及獲取測試的包的package

Python+APPIUM UI自動化程式碼獲取裝置資訊:devicesId、deviceName、platformVersion以及獲取測試的包的package

  以下程式碼包含獲取單個或多個裝置資訊,為

import os, re
import subprocess

# 專案根路徑
BaseDIr = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))


def get_app_devicesId():
    # 獲取一個裝置的devicesid
    readDeviceId = list(os.popen('adb devices').readlines())
    deviceId = re.findall(r'^\w*\b', readDeviceId[1])[0]
    return deviceId


def get_app_devices():
    # 獲取多個裝置devicesId
    lists = os.popen('adb devices').read()
    devices = lists.strip().split('\n')
    devices_list = []
    for i in range(1, len(devices)):
        device = (devices[i].split('\t')[0])
        devices_list.append(device)
    return devices_list


def get_devices_version():
    # 獲取單個系統版本號
    cmd1 = 'adb shell getprop ro.build.version.release'
    deviceAndroidVersion = list(os.popen(cmd1).readlines())
    deviceVersion = re.findall(r'^\w*\b', deviceAndroidVersion[0])[0]
    return deviceVersion


def get_devices_info(devices_uuid):
    # 獲取多裝置資訊
    devices_info = []
    cmd1 = 'adb -s {} shell getprop ro.product.model'
    cmd2 = 'adb -s {} shell getprop ro.build.version.release'
    if devices_uuid:
        for de in devices_uuid:
            device_model = os.popen(cmd1.format(de)).read()
            deviceos_version = os.popen(cmd2.format(de)).read()
            devices_info.append((de, device_model.strip('\n'), deviceos_version.strip('\n')))
    return devices_info


# 獲取測試的包的package
def get_appPackage(apkPath):
    appLocation = BaseDIr + apkPath
    if os.path.exists(appLocation):
        appPackageAdb = list(os.popen('aapt dump badging ' + appLocation).readlines())
        appPackage = re.findall(r'\'com\w*.*?\'', appPackageAdb[0])[0]
        return appPackage




if __name__ == '__main__':
    # 列印裝置資訊
    devices_uuid = get_app_devices()
    print(get_devices_info(devices_uuid))