运行自动安装apk代码,报错: Original error: Could not find aapt Please set the ANDROID_HOME environment variable with the Android SDK root directory path.
整个过程:
看教程自学的APP自动化,按教程来写代码,发现声明设备信息这一步比较麻烦,要获取APP的包名和启动名
然后就开始自己胡思乱想了,能不能运行代码后自动安装,百度答案:可以;
然后按搜索到的方法写代码,如下
# 导入相关模块webdriver from appium import webdriver import os # 获取并保存当前项目的地址到apk_path apk_path = os.path.abspath(os.path.join(os.path.dirname(__file__),'..')) # 设备信息声明(需与真机或虚拟机现有的一致) device = {} device['platformName'] = 'Android'# 设备系统 device['platformVersion'] = '5.1'# 设备系统版本号 device['deviceName'] = '192.168.234.101:5555'# 设备连接名称 # 测试apk包路径 device['app'] = apk_path + '\\app\\__UNI__9200CEB_0302155728.apk' # 包名和启动名(获取命令:adb shell dumpsys window windows | findstr mFocusedApp)若设置的是apk包路径则不需要appPackage和appActivity这两项 # device['appPackage'] = 'io.dcloud.UNI9200CEB' # 包名 # device['appActivity'] = 'io.dcloud.PandoraEntryActivity' # 启动名 # 声明手机驱动对象——类似selenium 的创建浏览器——启动APP driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', device)
上面代码参考地址:https://blog.csdn.net/u011541946/article/details/77916671
运行代码结果:
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: packageAndLaunchActivityFromManifest failed. Original error: Could not find aapt Please set the ANDROID_HOME environment variable with the Android SDK root directory path.
报错大概意思是原始错误:找不到aapt请使用ANDROID SDK根目录路径设置ANDROID\u HOME environment变量。
接着寻找解决方法:
网上基本说法一致,环境配置的有问题,先检查环境是否有问题,然后给出了检查方法:
adb命令:appium-doctor
跟着操作输入appium-doctor命令,结果真的令人崩溃,如图
参考地址:https://www.cnblogs.com/amyzhu/p/9276007.html
没办法,接着搜,'appium-doctor' 不是内部或外部命令,也不是可运行的程序或批处理文件
在cmd中运行npm install appium -doctor -g命令。如图
参考地址:参考地址:https://zhuanlan.zhihu.com/p/96643627
然后在环境变量的path下配置环境变量 C:\Users\Administrator\AppData\Roaming\npm
继续运行appium-doctor命令
appium-doctor运行问题解决
上图可见,两个红色的 口 代表的就是有问题的地方
解决方法:去配置aapt环境变量
1、把这个变量配置到系统变量里的path里:D:\Android_SDK\android-sdk-windows\build-tools\29.0.3
2、把下图三个文件复制到tools文件里,如图
重新运行appium-doctor命令,结果如图,代表环境没问题了
再次运行自动安装apk代码看看是否还报错
结果还是报错
真的是卧槽了