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中lambda的用法及其与def的区别解析
Jul 28 Python
Python线程指南详细介绍
Jan 05 Python
使用Python & Flask 实现RESTful Web API的实例
Sep 19 Python
python删除服务器文件代码示例
Feb 09 Python
Python中if elif else及缩进的使用简述
May 31 Python
Python图像处理之颜色的定义与使用分析
Jan 03 Python
django 连接数据库 sqlite的例子
Aug 14 Python
Python使用多进程运行含有任意个参数的函数
May 02 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 Python
python中openpyxl和xlsxwriter对Excel的操作方法
Mar 01 Python
python 判断文件或文件夹是否存在
Mar 18 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中对2个数组相加的函数
2011/06/24 PHP
php数组合并的二种方法
2014/03/21 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
2014/08/22 Javascript
JavaScript字符串对象的concat方法实例(用于连接两个或多个字符串)
2014/10/16 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
Rollup处理并打包JS文件项目实例代码
2018/05/31 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
python web框架学习笔记
2016/05/03 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
组织关系转移介绍信
2014/01/16 职场文书
不遵守课堂纪律的检讨书
2014/09/24 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
MongoDB日志切割的三种方式总结
2021/09/15 MongoDB