Appium 禁掉安卓手机每次运行时都要安装 Unlock、Setting、Android Input Manager

网球王子 · March 13, 2017 · Last by hellohell replied at June 20, 2018 · 2660 hits

问题的产生
某些型号的安卓手机在运行 Appium 自动化测试的时候总会提示安装 Unlock, Appium Setting, Android Input Manager ,其实该手机上已经安装了相应程序,但还是会弹出对话框提示是否替换,看下图:

解决办法
我手头的手机里只有 oppo 、vivo 手机有这个问题,其他手机第一次安装过这些软件之后就不会再提示安装了;所以也许可以找到更好的方法,比如检查一下手机的配置是不是有什么问题; 不过,先用简单粗暴法绕开这个问题吧,更好的以后再尝试。

禁掉 Appium 中安装 Unlock, Setting, Android Input Manager
方法很简单,按照如下方法修改 2 个文件:
第一个文件:android-helpers.js
位置: /Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/appium-android-driver/lib
改动点:

第二个文件:android-helpers.js
位置:/Applications/Appium.app/Contents/Resources/node_modules/appium/node_modules/appium-android-driver/build/lib
改动点:

全部修改完毕之后,重启 appium 烦人的 Unlock, Setting, Android Input Manager 就不会再弹出安装提示了;如果需要恢复自动安装,将上述改动还原即可。

共收到 22 条回复 时间 点赞

嗯。用 OPPO 测试会出现每次都要安装 Unlock\Setting\Android Input Manager。HTC 的不会。

android-helpers.js 不过这个文件为啥 我没有找到?

appium 安装目录下 appium/node-modules/appium/lib/devices/android/android.js 注释掉 108、109、123、114 行就可以了。

chen 回复

我刚刚找了一下 windows 下的 appium,的确没有 android-helpers.js

dudu 回复

能否帮忙贴上具体注销行的代码么,大家用的 appium 版本不同,直接说行数可能会有误解。

window appium 安装目录下 appium/node-modules/appium/lib/devices/android/android.js 中注释如下行:
//this.uninstallApp.bind(this),
//this.installAppForTest.bind(this),
//this.pushSettingsApp.bind(this),
//this.pushUnlock.bind(this),

网球王子 回复

你用的是 MAC?

chen 回复

对 我的是 Mac 目录,多谢留下详细信息

dudu 回复

注释了依旧会弹窗

vivo 会,但是小米不会,谢谢你这个贴

楼主有遇到 oppo 手机 color3.0 版本中文输入乱码的情况吗?

回复

不行唉,还是一样会重复安装,我用的是 vivo 手机,平台是 windows,appium1.6.5。求支援

我安装的是 1.6.5 版本的 找不到这段代码 求楼主帮忙

蓝莓酱 回复

是否为 Android7.0?如果是 Android7.0 还需要屏蔽 uiautomator2 的安装逻辑。

非常感谢,按照你的方法之后,OPPO 手机上没有再弹出了

dudu 回复

你好,按照您的建议,注释掉之后,"Appium Android input manager for unicode" App 的安装提示框,有时候弹出来,有时候不会弹出来,请问您知道是什么原因吗?谢谢

dudu 回复

是 113,不是 123 哈,还是非常谢谢

this.pushAppium.bind(this),
//this.initUnicode.bind(this),
//this.pushSettingsApp.bind(this),
//this.pushUnlock.bind(this),
function (cb) {this.uiautomator.start(cb);}.bind(this),
this.wakeUp.bind(this),
//this.unlock.bind(this),
屏蔽到上面的四个,然后重启 appium 就可以了(老版本 appium1.4.16)

知行合一 回复

如何进行屏蔽呢?我现在用的是 appium v1.8 的版本,谢谢!

新版本的怎么办。。 蛋疼 这个 appium 没得用头了。。。

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-android-driver/build/lib/android-helpers.js

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-android-driver/lib/android-helpers.js

但确实不知道怎么改;mac 桌面版 1.2.7

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up