Appium+python自动化55-appium desktop每次启动安装Unlock和Appium Setting问题
前言
部分真机可能会出现每次运行代码,启动app之前都会重复安装Unlock和Appium Setting这两个小工具,有的手机会自动安装,这个还好。
有的手机每次都会弹出一个安装确认框(如部分小米和vivo出现),这样就比较麻烦了,不手动去点,就无法继续执行代码了。
注意:appium之前老的版本1.4和appium desktop v1.7以后版本安装路径不一样,也有差异
小编主要是以appium desktop(大于1.7版本)为例
我的环境:
appium desktop 桌面GUI版本 V1.7.1
appium desktop 无界面命令行版本 V1.8.1
appium desktop 桌面版本
1.先看appium desktop桌面安装版本,如下图,我的版本是v1.7.1

2.双击安装之后,会安装到c盘,可以直接搜索:appium desktop,然后按以下层级找到android-helpers.js修改如下几个地方
\appium-desktop\resources\app\node_modules\appium\node_modules\appium-android-driver\lib

修改如下几个地方:
1.注释掉355行 // await adb.install(unicodeIMEPath, false);
2.注释掉522行 // await helpers.pushSettingsApp(adb);
3. 注释掉526行 // await helpers.pushUnlock(adb);


3.再继续找到build\lib下的android-helpers.js文件
\appium-desktop\resources\app\node_modules\appium\node_modules\appium-android-driver\build\lib
修改如下几个地方:
1.注释掉919行,然后加一行代码
// return _regeneratorRuntime.awrap(adb.install(_appiumAndroidIme.path, false));
return context$1$0.abrupt('return', defaultIME);
2.注释掉1366行,然后加一行代码
// return _regeneratorRuntime.awrap(helpers.pushSettingsApp(adb));
return context$1$0.abrupt('return', defaultIME);
3.注掉1380行,然后加一行代码
// return _regeneratorRuntime.awrap(helpers.pushUnlock(adb));
return context$1$0.abrupt('return', defaultIME);


修改完后保存,然后重启appium,重新执行代码,就不会重复安装Unlock和Appium Setting了
appium desktop 命令行版本
1.如果是通过npm安装的appium命令行版本,我的命令行版本是1.8.1,那就在c盘搜索:npm,然后一层层找到以下路径

\npm\node_modules\appium\node_modules\appium-android-driver

2.在\npm\node_modules\appium\node_modules\appium-android-driver\lib\android-helpers.js打开修改
修改如下几个地方:
1.注释掉358行 // await adb.install(unicodeIMEPath, false);
2.注释掉570行 // await helpers.pushSettingsApp(adb);
3. 注释掉581行 // await helpers.pushUnlock(adb);
3.继续在\npm\node_modules\appium\node_modules\appium-android-driver\build\lib\android-helpers.js打开修改
修改如下几个地方:
1.注释掉782行,然后加一行代码
// return _regeneratorRuntime.awrap(adb.install(_appiumAndroidIme.path, false));
return context$1$0.abrupt('return', defaultIME);
2.注释掉1285行,然后加一行代码
// return _regeneratorRuntime.awrap(helpers.pushSettingsApp(adb));
return context$1$0.abrupt('return', defaultIME);
3.注掉1321行,然后加一行代码
// return _regeneratorRuntime.awrap(helpers.pushUnlock(adb));
return context$1$0.abrupt('return', defaultIME);
本篇主要是解决appium1.7以上版本,不同的版本号代码行数会有一点点差异
可能遇到的报错
1.如果遇到这个报错no such file or directory 'c:\node\stylus\package.json'。那就执行这2句
npm install -g express
npm init -y
详情查看stackoverflowhttps://stackoverflow.com/questions/9484829/npm-cant-find-package-json
上海-悠悠 QQ交流群:330467341
Appium+python自动化55-appium desktop每次启动安装Unlock和Appium Setting问题的更多相关文章
- Appium+python自动化8-Appium Python API
Appium+python自动化8-AppiumPython API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts conte ...
- appium+python自动化61-中文输入乱码问题解决
前言 在夜神模拟器上输入中文,发现是乱码,将unicodeKeyboard和resetKeyboard参数设置为True了,发现还是没法解决. 打开手机设置语言和输入法,发现找不到Appium And ...
- Appium+python自动化20-查看iOS上app元素属性
前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素 Mac版的appium1.6的 ...
- Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP
前言 做过iOS上app测试的小伙伴应该都知道,普通用户安装app都是从appstore下载安装,安装测试版本的app,一般就是开发给的二维码扫码安装, 或者开发给个.ipa的安装包文件,通过itoo ...
- appium+python自动化50-生成定位对象模板templet(jinja2)
前言 每次自己写pageobject定位元素对象太繁琐,格式都差不多,只是换个定位方法,这种就可以才有模板的方式,批量生成pageobject定位元素对象的模板 python里面生成模板有两个模块可以 ...
- Appium+python自动化20-查看iOS上app元素属性【转载】
前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素Mac版的appium1.6的版 ...
- Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP【转载】
前言 做过iOS上app测试的小伙伴应该都知道,普通用户安装app都是从appstore下载安装,安装测试版本的app,一般就是开发给的二维码扫码安装, 或者开发给个.ipa的安装包文件,通过itoo ...
- Appium+python自动化-查看app元素属性
本文转自:https://www.cnblogs.com/yoyoketang/p/7581831.html 前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道 ...
- appium+python自动化52-多点触控MultiAction
前言 MultiAction是针对多点触控操作的,是TouchAction的一个补充模块 TouchAction用法参考前面的一篇:appium+python自动化33-TouchAction 多点触 ...
随机推荐
- hdu 5202(DFS)
Rikka with string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- email的传输协议与格式(资源链接)
以下链接为转载. 传输协议: 发:SMTP 收:POP3, IMAP 格式: MIME
- **CodeIgniter通过hook的方式实现简单的权限控制
根据自己的实际情况,需要两个文件,一个是权限控制类,Acl,另外一个是权限配置的文件acl.php放在了config这个目录下. Acl这个类放在了application/hook/acl.php.通 ...
- Python的hasattr() getattr() setattr() 函数使用方法(简介)
hasattr(object, name)判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False.需要注意的是name要用括号括起来 1 ...
- QT构造函数中*parent
程序写的多了,你会发现几乎所有的Qt类的构造函数都会有一个parent参数.这个参数通常是QObject* 或者是 QWidget* 类型的(定义新的类是通常首先初始化为0,在类的实现函数中赋值).很 ...
- Good Bye 2014 F - New Year Shopping
F - New Year Shopping 对于一种特殊的不可逆的dp的拆分方法.. 也可以用分治写哒. #include<bits/stdc++.h> #define LL long l ...
- visible, disable, css绑定
这个例子非常简单,主要演示如何通过属性控制html元素的显示与否(visible),可用性(disable)以及根据属性添加相应的CSS样式. 先简单的看一段代码: <p> <inp ...
- [Codeforces166B]Polygons 凸包
大致题意: 给你一个凸多边形A,和一个任意多边形B,判断B是否在A的内部 先对A的点集建凸包,然后枚举B中的点,二分判断是否在A的内部. 二分时可用叉积判断,详细见代码 #include<cst ...
- 基于rsync方式的文件备份
rsync 是一个快速增量文件传输工具,它可以用于在同一主机备份内部的备分,我们还可以把它作为不同主机网络备份工具之用.本文主要讲述的是如何自架rsync服 务器,以实现文件传输.备份和镜像.相对ta ...
- 基于springboot实现http响应异常信息国际化
背景 国际化是指在设计软件,将软件与特定语言及地区脱钩的过程.当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正. 本文提到的异常响应信息国际化是指:前端向后台发起请求,后台在处理 ...