Appium+python之APP自动化五(卸载app)
一、python中adb命令卸载app
卸载app的adb命令使用adb uninstall
import os
from app_test_demo import adb_connect
class AppUninstall:
def __init__(self):
con = adb_connect.AdbConnect("127.0.0.1:62001") # 实例化连接设备的类
con.adb_connect() # 调用连接设备的方法
def app_uninstall(self):
app_pack_list = self.app_packages_three() # 调用查询第三方包名的方法,得到包含所有第三方安装包名的列表
if app_pack_list: # 判断第三方安装包名的列表不为空
print("安装的app包名列表:\n{}".format(app_pack_list)) # 打印第三方安装包名列表
uninstall_app_pack = input("请输入要删除app的包名:") # 输入要删除的包名
if uninstall_app_pack in app_pack_list: # 判断输入要删除的包名在查询出来的结果中
un_re = os.popen("adb uninstall {}".format(uninstall_app_pack)) # 使用adb uninstall <包名>命令卸载app
uninstall_re = un_re.read() # 读取卸载的结果
uninstall_result = uninstall_re[:7] # 截取卸载结果的前7位字母
if uninstall_result == 'Success': # 判断卸载结果的7位字母为Success
print("app卸载成功") # 打印app卸载成功
else:
print("未知错误") # 打印未知错误
else:
print("您输入的包名不存在,请检查!") # 如果输入的包名不存在包名列表中则提示
else:
print("未查询到第三方安装的app") # 如果第三方安装包名列表为空则提示
def app_packages_three(self):
packages = os.popen("adb shell pm list packages -3") # adb命令查询第三方安装的包名
app_packages = packages.read() # 读取第三方安装的app包名
print(app_packages)
app_pack_str = app_packages.replace('\n', '') # 读取结果把换行符\n替换为空,删除换行符
app_pack_list = app_pack_str.split("package:") # 使用split方法切片,得到包名的一个列表
print(app_pack_list)
app_pack_list.pop(0) # 使用列表的pop方法删除包名列表中的第一个数据
return app_pack_list # 返回包名列表
if __name__ == '__main__':
a = AppUninstall()
a.app_uninstall()
1.定义初始化方法
初始化时调用了连接设备的类,实例化连接设备的类,主要判断是否已连接设备
def __init__(self):
con = adb_connect.AdbConnect("127.0.0.1:62001") # 初始化连接设备的类
con.adb_connect() # 调用连接设备的方法
2.定义卸载app的方法
首先调用查询第三方包名的方法,得到第三方包名的列表,判断列表是否为空,不为空则打印第三方安装的包名,此处使用输入包名执行删除的步骤(暂定,后续调整),判断包名是否在查询出来的结果中,在这执行卸载app的命令,卸载后根据返回的卸载结果判断是否成功,成功则打印卸载成功
def app_uninstall(self):
app_pack_list = self.app_packages_three() # 调用查询第三方包名的方法,得到包含所有第三方安装包名的列表
if app_pack_list: # 判断第三方安装包名的列表不为空
print("安装的app包名列表:\n{}".format(app_pack_list)) # 打印第三方安装包名列表
uninstall_app_pack = input("请输入要删除app的包名:") # 输入要删除的包名
if uninstall_app_pack in app_pack_list: # 判断输入要删除的包名在查询出来的结果中
un_re = os.popen("adb uninstall {}".format(uninstall_app_pack)) # 使用adb uninstall <包名>命令卸载app
uninstall_re = un_re.read() # 读取卸载的结果
uninstall_result = uninstall_re[:7] # 截取卸载结果的前7位字母
if uninstall_result == 'Success': # 判断卸载结果的7位字母为Success
print("app卸载成功") # 打印app卸载成功
else:
print("未知错误") # 打印未知错误
else:
print("您输入的包名不存在,请检查!") # 如果输入的包名不存在包名列表中则提示
else:
print("未查询到第三方安装的app") # 如果第三方安装包名列表为空则提示
3.定义查询第三方包名的方法
此方法用来查询第三方包名,把查询出来的数据再进一步加工得到一个包含所有第三方安装包名的列表
def app_packages_three(self):
packages = os.popen("adb shell pm list packages -3") # adb命令查询第三方安装的包名
app_packages = packages.read() # 读取第三方安装的app包名
print(app_packages)
app_pack_str = app_packages.replace('\n', '') # 读取结果把换行符\n替换为空,删除换行符
app_pack_list = app_pack_str.split("package:") # 使用split方法切片,得到包名的一个列表
print(app_pack_list)
app_pack_list.pop(0) # 使用列表的pop方法删除包名列表中的第一个数据
return app_pack_list # 返回包名列表
1)使用adb shell pm list packages -3命令查询包名的结果如下,多个包名之间是换行间隔,实际就是换行符\n
2)使用replace方法把换行符\n替换为空,得到包含所有包名的字符串,如下图
app_pack_str = app_packages.replace('\n', '') # 读取结果把换行符\n替换为空,删除换行符
3)使用字符串的split方法根据package:进行切片,得到一个包含包名的列表,如下图
app_pack_list = app_pack_str.split("package:") # 使用split方法切片,得到包名的一个列表
4)使用列表的pop方法根据下标删除包名列表的第一个值,得到最终的包名列表
app_pack_list.pop(0) # 使用列表的pop方法删除包名列表中的第一个数据
Appium+python之APP自动化全集