版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/zhusongziye/article/details/77856259
使用 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"