Appium自動獲取 Android 裝置 id 和包名等資訊(python)

zhusongziye發表於2017-09-05



使用 Appium,每次換裝置換 APP 測試時要在指令碼修改很多東西,很麻煩,要自動獲取可以通過指令獲得的資訊,使用該起來也方便。


最終效果是每次只需要修改測試的包的路徑和包名就可以自動刪除舊的安裝包,並獲得 Android 裝置 id 和包名等 Appium 需要的資訊。


適用於:Python + Android


使用到了 aapt,該工具在 SDK/tools 目錄下,如果你沒有設定環境變數,那需要進入該目錄下才能執行 aapt 命令,如果設定了環境變數則可以在任何目錄下執行 aapt 命令了。配置 aapt 環境變數的方法,請自行百度。

下面上程式碼:

# -*- coding: utf-8 -*-

from appium import webdriver

# 使用正規表示式篩選裝置 id
import re

# 使用time.sleep(xx)函式進行等待
import time

# 使用 os 模組呼叫命令
import os

# 測試的包的路徑和包名
appLocation = " /Users/Downloads/app.apk "

# 讀取裝置 id
readDeviceId = list(os.popen('adb devices').readlines())

# 正規表示式匹配出 id 資訊
deviceId = re.findall(r'^\w*\b', readDeviceId[1])[0]

# 讀取裝置系統版本號
deviceAndroidVersion = list(os.popen('adb shell getprop ro.build.version.release').readlines())
deviceVersion = re.findall(r'^\w*\b', deviceAndroidVersion[0])[0]

# 讀取 APK 的 package 資訊
appPackageAdb = list(os.popen('aapt dump badging ' + appLocation ).readlines())
appPackage = re.findall(r'\'com\w*.*?\'', appPackageAdb[0])[0]

# 刪除以前的安裝包
os.system('adb uninstall ' + appPackage)


desired_caps = {
    'platformName': 'Android',
    'platformVersion': deviceVersion,
    'deviceName': deviceId,
    'appPackage': appPackage,
    'appWaitPackage': appPackage,
    'app': appLocation,
    'appActivity': appPackage + ".PageSplash",


command_executor = "http://localhost:4723/wd/hub"


相關文章