解决部分机型 appium 安装应用时需要手动确认的问题
来源:互联网 发布:淘宝uv和pv 编辑:程序博客网 时间:2024/04/29 06:41
最近在moto x上(5.0的,不确定是不是所有5.0都这样)跑case遇到一个问题:每次在appium安装应用的时候系统会弹窗提示是否确认安装。需要手动点击确认才能继续,否则就只能卡在这里。
翻看源码发现appium使用的是
adb install
来安装应用的,手动执行adb install
确实会弹窗度娘那里得来还有一种安装方法
pm install
手动尝试先把包push到手机上,再
pm install
,没有弹窗,可以解决问题。于是注释掉appium安装,顺手也注释掉unlock和app setting的安装。
文件路径:/usr/local/lib/node_modules/appium/lib/devices/android/android.js ,如果使用的是selendroid模式,则需要注释掉selendroid.js里的相关内容
//this.uninstallApp.bind(this), //this.installAppForTest.bind(this), //this.pushSettingsApp.bind(this), //this.pushUnlock.bind(this),
手动写了一个package、unlock、app setting的安装方法,每次执行case集前调用一次,即解决了个别机器弹窗的问题,又避免了appium每执行一个case都要安装三个应用,提高了执行速度。
# encoding:UTF8import pexpect, sys, os.path, subprocessdef install_apk(device, path_to_apk): print 'Installing apk: {0} for device: {1}'.format(path_to_apk, device) file_name = os.path.basename(path_to_apk) pexpect.run('adb -s {0} push {1} /sdcard/{2}'.format(device, path_to_apk, file_name)) p = pexpect.spawn('adb -s {0} shell'.format(device)) p.logfile = sys.stdout p.expect('.*shell@.*', 20) p.sendline('pm install /sdcard/{0}'.format(file_name)) index = p.expect(['Success', '.*shell@.*'], 120) p.sendline('rm /sdcard/{0}'.format(file_name)) if index == 1: print 'Intall apk: {0} for device: {1} failed.'.format(path_to_apk, device) exit(1)def uninstall_apk(device, package): print 'Uninstalling apk: {0} for device: {1}'.format(package, device) result = str(pexpect.run('adb -s {0} uninstall {1}'.format(device, package))).strip().lower() if 'failure' == result: print 'WARN: Uninstall apk: {0} for device: {1} has error, maybe not exists.'.format(package, device); exit(0) if 'success' != result: print 'Uninstall apk: {0} for device: {1} failed, msg: {2}'.format(package, device, result) exit(1)if __name__ == '__main__': if len(sys.argv) < 4: print 'Arguments error, usage: python install_app <install | uninstall> <device> <apk | package>' exit(1) op = sys.argv[1] device = sys.argv[2] if op == 'install': apk = sys.argv[3] install_apk(device, apk) else : package = sys.argv[3] uninstall_apk(device, package)
另外小米的机器不管使用什么方法,仍然会有弹窗,我还是没能解决,不知道各位高手有什么方法。
0 0
- 解决部分机型 appium 安装应用时需要手动确认的问题
- Solaris上开发J2EE应用时中文问题的解决
- 如何解决Xcode5上传应用时找不到图标的问题。
- Appium测试Android混合应用时,第二次切换到WebView时的定位问题
- delete 应用时应注意的问题
- Linux安装应用时需要考虑时区问题并修改时区
- 解决android部分机型拍照后被旋转的问题
- 随手记——Tomcat配置web应用时需要注意的小问题
- 需要确认的问题
- appium解决每次运行都需要安装Unlock以及AppiumSetting的问题
- MySQL 开发应用时的超时问题
- Minifying Angular应用时产生的问题
- 做Camera应用时遇到的问题
- 重复安装同一个包名的应用时出错的解决
- 解决使用MySQL C-API开发应用时的连接超时问题
- 解决开发android应用时虚拟机启动、运行较慢的问题
- 解决开发android应用时虚拟机启动、运行较慢的问题
- 如何解决GoAgent上传应用时遇到AttributeError: can't set attribute的问题
- mstsc 允许多人登录 Window Server 2012虚拟机
- 为Python添加默认模块搜索路径
- 广播接收者
- jquery删除属性和添加属性
- 分布式进阶(六)之集群控制管理
- 解决部分机型 appium 安装应用时需要手动确认的问题
- ARC模式设置
- mybatis与hibernate区别
- 细说java引用类型
- iOS 汉字转拼音
- javascript事件处理程序
- nginx安装与配置
- EXCEL一列未合并的单元格复制粘贴到另一列合并的单元格里(offset函数)
- Java获取服务器环境