一、需要解决的问题
在部分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即可。