Selenium/Appium技术:如何从APK文件或通过Appium获取安卓应用版本
获取Android应用版本信息的两种实用方案
嘿,刚好我做Android自动化测试时也碰到过同样的需求,给你分享两种靠谱的方法:直接从APK文件解析版本信息,以及通过Appium获取已安装应用的版本数据。
一、直接从APK文件提取版本信息
如果你手里有APK安装包,不需要安装就能拿到版本信息,推荐两种方式:
1. 用Android原生工具aapt
aapt是Android SDK自带的工具,路径一般在$ANDROID_HOME/build-tools/xx.x.x/目录下。打开终端执行以下命令:
- 获取版本名称(versionName):
aapt dump badging your_app.apk | grep versionName - 获取版本号(versionCode):
aapt dump badging your_app.apk | grep versionCode
输出格式类似versionName='1.3.0',你可以自行做字符串提取处理。
2. 用Python第三方库批量解析
如果需要在代码里批量处理APK文件,推荐用apkutils库。先安装依赖:
pip install apkutils
然后写代码解析:
from apkutils import APK # 初始化APK对象 apk = APK("path/to/your_target.apk") # 提取版本信息 version_name = apk.get_androidversion_name() version_code = apk.get_androidversion_code() print(f"应用版本名称:{version_name}") print(f"应用版本号:{version_code}")
二、通过Appium获取已安装应用的版本信息
如果应用已经安装在测试设备或模拟器上,Appium可以直接获取版本信息,有两种思路:
1. 从Driver的Capabilities直接读取
启动Appium会话后,直接从driver的capabilities中获取appVersion字段:
from appium import webdriver desired_caps = { "platformName": "Android", "deviceName": "emulator-5554", # 你的设备名称 "appPackage": "com.example.your_app", # 目标应用包名 "appActivity": "com.example.your_app.MainActivity" # 应用启动Activity } # 连接Appium服务 driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps) # 获取版本名称 app_version = driver.capabilities.get("appVersion") print(f"已安装应用版本:{app_version}") driver.quit()
2. 执行ADB命令获取完整版本详情
如果需要同时拿到versionName和versionCode,可以通过Appium执行ADB shell命令:
# 承接上面的driver初始化代码 # 执行dumpsys命令获取包版本信息 version_details = driver.execute_script( 'mobile: shell', {'command': 'dumpsys package com.example.your_app | grep -E "versionName|versionCode"'} ) print("应用版本详情:") print(version_details)
输出会包含versionName=1.3.0和versionCode=130这类清晰的版本数据。
注意:如果应用还未安装,Appium无法直接从APK文件读取版本信息,需要先按第一部分的方法解析APK拿到数据,或者先安装应用再通过上述方式获取。
内容的提问来源于stack exchange,提问作者Wes
相关产品推荐
相关产品推荐

