一、需要解决的问题
在部分android机型上每次运行最新版的appium-desktop都需要安装AppiumSetting以及Unlock,并且安装过程需要用户手动来确认,即使测试机上已经安装了这两个组件,运行appium也会要求安装,对于测试以及脚本的调试来说非常不便。
二、解决过程
进入appium的安装目录:
windows:
C:\Users\Administrator\AppData\Local\Programs\appium-desktop\resources\app\node_modules\appium\node_modules\appium-android-driver\lib
每个人安装的位置不一样,总之找到\appium-desktop\resources\app\node_modules\appium\node_modules\appium-android-driver\lib就行。
Mac:/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-android-driver/build/lib
这里就以1.7.1 mac版本的appium为例子:(用命令安装Appium,其他方式安装appium 根路径有可能不一样)
# 因为appium(版本1.7.1)会每次测试会自动的安装所需要的setting\unlock\ime等apk,所以需要按照以下步骤进行注释,以屏蔽掉他们自己的安装:
# 快速定位文件快捷方式普通键盘:windows+shift+G ;苹果键盘:Option+shift+G (焦点必须在桌面快捷键才能使用)
1、文件: /usr/local/lib/node_modules/appium/node_modules/appium-android-driver/lib/driver.js,注释以下几句代码
await this.adb.uninstallApk(this.opts.appPackage);
await helpers.installApkRemotely(this.adb, this.opts);
await helpers.resetApp(this.adb, this.opts.app, this.opts.appPackage, this.opts.fastReset);
await this.checkPackagePresent();
2、文件:/usr/local/lib/node_modules/appium/node_modules/appium-android-driver/build/lib/driver.js 注释以下几句代码
return _regeneratorRuntime.awrap(_androidHelpers2['default'].resetApp(this.adb, this.opts.app, this.opts.appPackage, this.opts.fastReset));
return _regeneratorRuntime.awrap(this.adb.uninstallApk(this.opts.appPackage));
return _regeneratorRuntime.awrap(_androidHelpers2['default'].installApkRemotely(this.adb, this.opts));
return _regeneratorRuntime.awrap(this.checkPackagePresent());
3、文件:/usr/local/lib/node_modules/appium/node_modules/appium-android-driver/lib/android-helpers.js 注释以下几句代码
await adb.install(unicodeIMEPath, false);
await helpers.pushSettingsApp(adb);
await helpers.pushUnlock(adb);
4、文件 /usr/local/lib/node_modules/appium/node_modules/appium-android-driver/build/lib/android-helpers.js 替换以下几句代码
return _regeneratorRuntime.awrap(helpers.initUnicodeKeyboard(adb))
替换为return context$1$0.abrupt('return', defaultIME);
return _regeneratorRuntime.awrap(helpers.pushSettingsApp(adb));
替换为return context$1$0.abrupt('return', defaultIME);
return _regeneratorRuntime.awrap(helpers.pushUnlock(adb));
替换为return context$1$0.abrupt('return', defaultIME)
其中:修改之后需要重启电脑设置才会生效
下图为图解:
注意是在build路径下的lib文件夹
编辑这个文件:
找到下面这行,将它注释掉,并且在该行下方加上一行:
lib下面:
然后保存并且退出。重启appium即可。