Appium+python之APP自动化四(安装app)
一、python中adb命令安装app
adb命令安装app的前提条件需要先启动夜神模拟器(设备),且adb已连接设备,此处设定了三种安装方式:常规安装、覆盖安装、降级安装(安装比当前版本低的版本)
在执行安装app步骤前首先判断了是否已连接设备,若连接了设备才执行安装的步骤,否则就返回当前连接设备的状态情况
import os
from app_test_demo import adb_connect
class AppInstall:
def __init__(self, device_name, apk_path, method=''):
self.apk_path = apk_path # apk的路径
self.install_method = method # 安装的app方法,常规安装(默认)、R(覆盖安装)、D(降级安装)
self.device = device_name # 设备的名称
def app_install(self): # 安装的方法
adb_cont = adb_connect.AdbConnect(self.device) # 初始化adb连接的类,传入设备名称
device_status = adb_cont.adb_connect() # 调用adb连接类的方法连接设备
if "已连接上设备" in device_status: # 如果已连接设备则执行下面的安装app步骤
print(device_status) # 打印连接设备的列表
try:
if self.install_method == '': # 判断是否传入的安装方法为空
self.app_direct_install() # 调用常规安装app的方法
elif self.install_method == 'R': # 传入了R参数,表示覆盖安装
self.app_replace_install() # 调用覆盖安装的方法
elif self.app_downgrade_install() == 'D': # 传入了D参数,表示降级安装
self.app_downgrade_install() # 调用降级安装的方法
else:
pass
except Exception as e: # 如果有错误则打印错误
print(e)
else:
print(device_status) # 如果不是已连接设备,则打印连接设备列表
def app_direct_install(self): # 常规安装app的方法
install = os.popen("adb install {}".format(self.apk_path)) # 执行adb install命令常规安装
install_re = install.read() # 把安装的结果赋值给变量install_re
if 'Success' in install_re[-9:-1]: # 判断安装结果的部分包含Success
return print("app已成功安装") # 打印app已安装成功
else:
return print("app未成功安装,安装结果:{}\n覆盖或降级安装需要在初始化时添加安装附加参数:R(覆盖安装)、D(降级安装)".format(install_re[-41:-2]))
def app_replace_install(self): # 覆盖安装的方法
install = os.popen("adb install -r {}".format(self.apk_path)) # 执行adb install -r命令覆盖安装
install_re = install.read()
if 'Success' in install_re[-9:-1]:
return print("app已成功安装")
else:
return print("app未成功安装,安装结果:{}\n覆盖或降级安装需要在初始化时添加安装附加参数:R(覆盖安装)、D(降级安装)".format(install_re[-41:-2]))
def app_downgrade_install(self): # 降级安装的方法
install = os.popen("adb install -r -d {}".format(self.apk_path)) # 执行adb install -r -d命令降级安装
install_re = install.read()
if 'Success' in install_re[-9:-1]:
return print("app已成功安装")
else:
return print("app未成功安装,安装结果:{}\n覆盖或降级安装需要在初始化时添加安装附加参数:R(覆盖安装)、D(降级安装)".format(install_re[-41:-2]))
if __name__ == '__main__':
# a = AppInstall(r"D:\ac\APP\tools\yibijizhang.apk", "127.0.0.1:62001", method="R")
# a.app_install()
b = AppInstall("127.0.0.1:62001", r"D:\download\meituan10.10.403.apk")
b.app_install()
1. 定义初始化方法
初始化方法中包含了三个参数:
① apk_path为安装app的apk包路径
② method为安装的方法:常规安装(默认)、覆盖安装、降级安装(安装比当前版本低的版本)
③ device_name为连接设备的名称,要使用设备名称判断adb是否连接设备
def __init__(self, device_name, apk_path, method=''):
self.apk_path = apk_path # apk的路径
self.install_method = method # 安装的app方法,常规安装(默认)、R(覆盖安装)、D(降级安装)
self.device = device_name # 设备的名称
2. 执行安装app的方法
此处定义app执行安装的方法,先实例化连接模拟器的类,判断adb是否已连接模拟器,连接成功则根据传入的安装方法调用对应安装app的方法
def app_install(self): # 安装的方法
adb_cont = adb_connect.AdbConnect(self.device) # 实例化adb连接的类,传入设备名称
device_status = adb_cont.adb_connect() # 调用adb连接类的方法连接设备
if "已连接上设备" in device_status: # 如果已连接设备则执行下面的安装app步骤
print(device_status) # 打印连接设备的列表
try:
if self.install_method == '': # 判断是否传入的安装方法为空
self.app_direct_install() # 调用常规安装app的方法
elif self.install_method == 'R': # 传入了R参数,表示覆盖安装
self.app_replace_install() # 调用覆盖安装的方法
elif self.app_downgrade_install() == 'D': # 传入了D参数,表示降级安装
self.app_downgrade_install() # 调用降级安装的方法
else:
pass
except Exception as e: # 如果有错误则打印错误
print(e)
else:
print(device_status) # 如果不是已连接设备,则打印连接设备列表
3. 常规安装app的方法
定义常规安装app的方法使用adb install <apk包路径>
def app_direct_install(self): # 常规安装app的方法
install = os.popen("adb install {}".format(self.apk_path)) # 执行adb install命令常规安装
install_re = install.read() # 把安装的结果赋值给变量install_re
if 'Success' in install_re[-9:-1]: # 判断安装结果的部分包含Success
return print("app已成功安装") # 打印app已安装成功
else:
return print("app未成功安装,安装结果:{}\n覆盖或降级安装需要在初始化时添加安装附加参数:R(覆盖安装)、D(降级安装)".format(install_re[-41:-2]))
4. 覆盖安装app的方法
定义覆盖安装app的方法使用adb install -r <apk包路径>
def app_replace_install(self): # 覆盖安装的方法
install = os.popen("adb install -r {}".format(self.apk_path)) # 执行adb install -r命令覆盖安装
install_re = install.read()
if 'Success' in install_re[-9:-1]:
return print("app已成功安装")
else:
return print("app未成功安装,安装结果:{}\n覆盖或降级安装需要在初始化时添加安装附加参数:R(覆盖安装)、D(降级安装)".format(install_re[-41:-2]))
5. 降级安装app的方法
定义覆盖安装app的方法使用adb install -r -d <apk包路径>
def app_downgrade_install(self): # 降级安装的方法
install = os.popen("adb install -r -d {}".format(self.apk_path)) # 执行adb install -r -d命令降级安装
install_re = install.read()
if 'Success' in install_re[-9:-1]:
return print("app已成功安装")
else:
return print("app未成功安装,安装结果:{}\n覆盖或降级安装需要在初始化时添加安装附加参数:R(覆盖安装)、D(降级安装)".format(install_re[-41:-2]))
Appium+python之APP自动化全集