Python之使用adb shell命令启动应用的方法详解


Posted in Python onJanuary 07, 2019

一直有一个心愿希望可以用Python做安卓自动化功能测试,在一步步摸索中,之前是用monkeyrunner,但是发现对于控件ID的使用非常具有局限性,尤其是ID的内容不便于区分

具有重复性时,后面又发现Uiautomator可以对resorceId、text、packageName等元素进行定位,也找到了xiaochong这位大神关于uiautomator的封装包,链接如下:

https://github.com/xiaocong/uiautomator

做为一个小白,这一切都需要摸索,在克服了安装uiautormator封装包的问题后,又卡在启动应用这个问题上,之前使用monkeyrunner时启动应用使用的是如下代码:

from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage

package = 'com.android.settings'

activity = '/.Settings'

runcomponent = package + activity

device.startActivity(component = runcomponent)

也是我无知,尝试了很久,终于找到了adb shell am start 包名/Activity启动,以设置应用为例,代码如下

import os

os.system(“adb shell am start -n com.android.settings/.Settings”)

运行结果如下:

Starting: Intent { cmp=com.android.settings/.Settings }
0

成功进入设置应用界面,接下来可以尝试其它你想做的操作了

当然这只是解决了我在PC上运行的问题,在查找问题时有留意到uiautomator最终是要编译成jar文件是要放到android里面的虚拟环境去执行命令,但是android内部并没有adb

环境,所以adb命令会失败,必须得找到能够在android也可以运行的方法

以此做个备忘,希望自己可以在这条路上走得越来越远。

以上这篇Python之使用adb shell命令启动应用的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中如何获取类属性的列表
Dec 26 Python
python编写分类决策树的代码
Dec 21 Python
Python遍历numpy数组的实例
Apr 04 Python
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
python使用wxpy实现微信消息防撤回脚本
Apr 29 Python
PyQt5下拉式复选框QComboCheckBox的实例
Jun 25 Python
使用python搭建服务器并实现Android端与之通信的方法
Jun 28 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
使用python切片实现二维数组复制示例
Nov 26 Python
Windows上安装tensorflow  详细教程(图文详解)
Feb 04 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
Feb 05 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 05 Python
python 对多个csv文件分别进行处理的方法
Jan 07 #Python
python 同时运行多个程序的实例
Jan 07 #Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 #Python
在python中使用with打开多个文件的方法
Jan 07 #Python
python读取文件名并改名字的实例
Jan 07 #Python
Python 调用 zabbix api的方法示例
Jan 06 #Python
使用Django2快速开发Web项目的详细步骤
Jan 06 #Python
You might like
php mysql索引问题
2008/06/07 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
laravel安装和配置教程
2014/10/29 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
javascript FormatNumber函数实现方法
2008/12/30 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
BootStrap selectpicker
2016/06/20 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
JS实现身份证输入框的输入效果
2017/08/21 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
2018/04/19 Javascript
vue添加axios,并且指定baseurl的方法
2018/09/19 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
2018/12/16 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
2019/06/15 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
OpenLayers3加载常用控件使用方法详解
2020/09/25 Javascript
Python中的作用域规则详解
2015/01/30 Python
Python中使用PDB库调试程序
2015/04/05 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
PyQt5每天必学之组合框
2018/04/20 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
详解Python流程控制语句
2020/10/28 Python
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
《曹刿论战》教学反思
2014/03/02 职场文书
2015感人爱情寄语
2015/02/26 职场文书
综治目标管理责任书
2015/05/11 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
继续教育心得体会(共6篇)
2016/01/19 职场文书