「自分撮りチュートリアル51」Python_adb生成されたバッチアプリケーションのバージョンテーブル

ケースI:ソフトウェア開発段階のバージョンが非常に重要であり、異なるバージョンが
固定されているバグが実装同じではなく、同じ機能ではありません、
アンドロイドの端末製品の正式リリースバージョンの前に、プロジェクトマネージャーに加えて、システムは外の正しいバージョンを決定していることを確認
アプリケーションのすべてのバージョンは、個別に検証が装備されますされていることは正しいか、
防止アプリケーションは、システム統合を行う機能や異常なアプリケーションが失われ、間違った時間を一体化!
ケースIIは:テストマネージャは、テーブルを行うために私に尋ねた、テーブルには、すべてのアプリケーション、システムの名前が含まれている
パフォーマンステストの統計情報(CPUとメモリ)のためのアプリケーションのバージョン情報。


その質問は、どのようにアンドロイドのバッチ内側に、ある統合しました?記載されているすべてののアプリケーションのバージョンをしてテーブルを生成
するには注5 Meizuの電話は、例えば、それは手動でレコードを登録、する場合
、通常は設定- 「アプリケーション管理- 」一つずつバージョンを参照してください。


準備フェーズ
  1. adbのシェル午後リストパッケージは、すべてのシステムでのアプリのパッケージ名を一覧表示することができ、
    PMは、パッケージマネージャの短いで、Androidのインストールパッケージ管理ツールのための重要なアプリです、
    アプリをインストールするために使用することができ、アンインストールアプリ、リストのすべてのアプリのようにします。
  2. adbのシェルdumpsysパッケージ+アプリケーションのパッケージ名が解析されたバージョン情報をすることができ、
    Androidはアプリのパッケージを解析することができます重要な分析ツールであるdumpsys。
  3. OpenpyxlモジュールはCSVテキスト形式を作るために考えられるも、当然のことながら、Excel形式を生成するために考えることができ、
    Excelの操作場合、廃止されたモジュールのようなxlrdない、xlwtを試し、openpyxlを推奨しています。

Pythonのバッチスクリプトフォーム

バッチスクリプトの本質は、順次実行されるバッチ処理であってもよいです。

# coding=utf-8

import os
import re
import csv

app_list = []  # 新建一个空的列表,用于存放所有app的package name用的。
app_version_dict = {}  # 新建一个空字典,用于存放app package name及version信息。

# 先读取系统内的所有App的package
app_str = os.popen("adb shell pm list package").read()

for line in app_str.splitlines():
    app_list.append(line.replace("package:", ""))
print(app_list)

# 获取各个App package的version信息
for app in app_list:
    version_str = os.popen("adb shell \"dumpsys package %s| grep versionName\"" % app).read()
    version_name = re.findall(r"versionName=(.*)", version_str)[0]
    print("App : %s, Version : %s" % (app, version_name))
    app_version_dict[app] = version_name

# 将app_version_dict字典写入CSV 表格中。
table_title = ["App_Package_Name", "Version"]  # 表格第一行

csvfile = "App_Version.csv"
with open(csvfile, "w", newline='') as hf:
    writer = csv.DictWriter(hf, fieldnames=table_title)  # 将字典填写进csv,建议用DictWriter类
    writer.writeheader()
    for key, value in app_version_dict.items():
        writer.writerow({'App_Package_Name': key, 'Version': value})

print("App的包名与其版本信息,已经存储到了%s" % os.path.abspath(csvfile))
os.system("pause")

関数形Pythonのためのプロセス
# coding=utf-8

import os
import re
import csv


def get_package():
    app_list = []  # 新建一个空的列表,用于存放所有app的package name用的。
    app_str = os.popen("adb shell pm list package").read()
    for line in app_str.splitlines():
        app_list.append(line.replace("package:", ""))
    return app_list


def get_app_version(app_package):
    '''获取指定app的版本号'''
    version_str = os.popen("adb shell \"dumpsys package %s| grep versionName\"" % app_package).read()
    version_name = re.findall(r"versionName=(.*)", version_str)[0]
    print("App : %s,  Version : %s" % (app_package, version_name))
    return version_name


def get_all_apps_version():
    '''获取所有app的版本号'''
    app_version_dict = {}  # 新建一个空字典,用于存放app package name及version信息。
    for app in get_package():
        version_name = get_app_version(app)
        app_version_dict[app] = version_name
    return app_version_dict


def write_csv(input_dict, csvfile):
    '''将app_version_dict字典写入CSV 表格中'''
    table_title = ["App_Package_Name", "Version"]  # 表格第一行
    with open(csvfile, "w", newline='') as hf:
        writer = csv.DictWriter(hf, fieldnames=table_title)
        writer.writeheader()
        for key, value in input_dict.items():
            writer.writerow({'App_Package_Name': key, 'Version': value})
    print("App的包名与其版本信息,已经存储到了%s" % os.path.abspath(csvfile))


app_version_dict = get_all_apps_version()  # 获取所有的App及其版本组成的字典
csvfile = "App_Version.csv"  # 自定义指定保存到哪个csvfile
write_csv(app_version_dict, csvfile)  # 将字典写入csv
os.system("pause")

Pythonのオブジェクト指向のクラスの形で
# coding=utf-8

import os
import re
import csv


class PackageVersionGetter():
    def __init__(self):
        self.app_list = []  # 新建一个空的列表,用于存放所有app的package name用的。
        self.app_version_dict = []  # 新建一个空字典,用于存放app package name及version信息。

    def get_package(self):
        app_str = os.popen("adb shell pm list package").read()
        for line in app_str.splitlines():
            self.app_list.append(line.replace("package:", ""))

    def get_app_version(self, app_package):
        '''获取指定app的版本号'''
        version_str = os.popen("adb shell \"dumpsys package %s| grep versionName\"" % app_package).read()
        version_name = re.findall(r"versionName=(.*)", version_str)[0]
        print("App : %s,  Version : %s" % (app_package, version_name))
        return version_name

    def get_all_apps_version(self):
        '''获取所有app的版本号'''
        self.get_package()  # 确保self.app_list里边有数据,不会是空列表
        for app in self.app_list:
            version_name = self.get_app_version(app)
            self.app_version_dict[app] = version_name
        return self.app_version_dict


class CsvWriter():
    def __init__(self, csvfile, input_dict):
        self.csvfile = csvfile
        self.input_dict = input_dict

    def write_csv(self):
        '''将app_version_dict字典写入CSV 表格中'''
        table_title = ["App_Package_Name", "Version"]  # 表格第一行
        with open(self.csvfile, "w", newline='') as hf:
            writer = csv.DictWriter(hf, fieldnames=table_title)
            writer.writeheader()
            for key, value in self.input_dict.items():
                writer.writerow({'App_Package_Name': key, 'Version': value})
        print("App的包名与其版本信息,已经存储到了%s" % os.path.abspath(csvfile))


if __name__ == '__main__':
    p_obj = PackageVersionGetter()
    app_version_dict = p_obj.get_all_apps_version()  # 获取所有的App及其版本组成的字典

    csvfile = "App_Version.csv"  # 自定义指定保存到哪个csvfile
    c_obj = CsvWriter(csvfile, app_version_dict)
    c_obj.write_csv()  # 将字典写入csv
    os.system("pause")

動作モードと効果

コンピュータに接続されたUSBケーブル、効果的に接続されているADBデバイスを介して確認してくださいあなたのAndroidデバイスを作成し、
そのようなget_app_version.py用やデスクトップ上に保存して、上記のコードを達成するために、フォームの3種類を直接実行することができ
、もちろん、get_app_version.py実行のpythonの勧告を、あなたは、ダブルクリックするとことができます実行します。
注これらは、GoogleがアプリケーションのAndroid7バージョンが登場しているので、いくつかのバージョン7は、正常であること。結果は以下の通りです。


より多くの、より良いオリジナルの記事は、公式サイトをご覧ください:www.zipython.com
自分撮りチュートリアル(Pythonのチュートリアルをテストの自動化を、呉はアル散乱編)
オリジナルリンク:https://www.zipython.com/#/detail?id=966384ef80e24721afbede1dfafb55e5
また、記事のプッシュを受け入れる準備ができて、マイクロチャネルのサブスクリプション番号を、「呉は人々を散在」心配することができます。

おすすめ

転載: www.cnblogs.com/zipython/p/12600130.html