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 多点触 ...
随机推荐
- js基础练习(四)
练习: 通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角.试编程. 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- javscript练习(三)
编写一个函数,计算两个数字的和差积商 function calculator(num1,num2,sign){ switch(sign){ cas ...
- [Vuejs+php] MySQL数据转JSON传值到前端
说在前面 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 优点如下[转]: 1.占带宽小(格式是压缩的) 2. js通过eval()进行Json读取(便 ...
- Mysql聚合函数count(*) 的性能分析
你首先要明确的是,在不同的 MySQL 引擎中,count(*) 有不同的实现方式. MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高: 而 ...
- MINIBASE源代码阅读笔记之heapfile
Heapfile 用来管理heap file里的dir page们 成员 _firstDirPageId:这个文件的第一个dir page _ftype:文件类型 _file_deleted:删除的时 ...
- bzoj 1483 链表 + 启发式合并
思路:将颜色相同的建成一个链表, 变颜色的时候进行链表的启发式合并.. 因为需要将小的接到大的上边,所以要用个f数组. #include<bits/stdc++.h> #define LL ...
- bzoj 1109
思路:我们考虑dp[ i ] 表示的是 i 在指定位置上 的最大个数, dp[ i ] = max(dp[ j ] + 1) j需要满足3个条件 1. j < i 2. a[ j ] < ...
- Python类总结-描述符__get__(),__set__(),__delete__()
1 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__get__(),set(),delete()中的一个,这也被称为描述符协议 get():调用一个属性时,触发 set():为一 ...
- React篇章-React 组件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...
- go chapter 10 函数 方法 struct的方法
1. struct的方法 // 定义struct type MyStruct struct{} // 定义方法 (那个对象可以回调)方法名(参数) 返回值 {} (s *MyStruct) FillS ...